Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def hailstone_length(n):
- if n == 1:
- return 1
- elif n %2 == 0:
- return 1 + hailstone_length(n/2)
- else:
- return 1 + hailstone_length(3*n + 1)
- def hailstone_length_NN(n):
- if n == 1:
- return 1
- elif n %2 == 0:
- return 1 + (yield hailstone_length_NN(n/2))
- else:
- return 1 + (yield hailstone_length_NN(3*n + 1))
- def exec_with_non_native_stack(gen):
- generators = [gen]
- result = None
- while generators:
- try:
- generators.append(generators[-1].send(result))
- result = None
- except StopIteration as e:
- generators.pop()
- result = e.value
- return result
- x = 9_780_657_630
- try:
- print(hailstone_length(x))
- except RecursionError:
- print("hailstone_length overflowed")
- try:
- print(exec_with_non_native_stack(hailstone_length_NN(x)))
- except RecursionError:
- print("hailstone_length_NN overflowed")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement