Advertisement
Guest User

Untitled

a guest
Feb 25th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.96 KB | None | 0 0
  1. def hailstone_length(n):
  2. if n == 1:
  3. return 1
  4. elif n %2 == 0:
  5. return 1 + hailstone_length(n/2)
  6. else:
  7. return 1 + hailstone_length(3*n + 1)
  8.  
  9. def hailstone_length_NN(n):
  10. if n == 1:
  11. return 1
  12. elif n %2 == 0:
  13. return 1 + (yield hailstone_length_NN(n/2))
  14. else:
  15. return 1 + (yield hailstone_length_NN(3*n + 1))
  16.  
  17. def exec_with_non_native_stack(gen):
  18. generators = [gen]
  19. result = None
  20. while generators:
  21. try:
  22. generators.append(generators[-1].send(result))
  23. result = None
  24. except StopIteration as e:
  25. generators.pop()
  26. result = e.value
  27. return result
  28.  
  29.  
  30. x = 9_780_657_630
  31. try:
  32. print(hailstone_length(x))
  33. except RecursionError:
  34. print("hailstone_length overflowed")
  35.  
  36. try:
  37. print(exec_with_non_native_stack(hailstone_length_NN(x)))
  38. except RecursionError:
  39. print("hailstone_length_NN overflowed")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement