Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.89 KB | None | 0 0
  1. import timeit
  2.  
  3.  
  4. recursive_code = """
  5. def factorial(n):
  6. if n == 0:
  7. return 1
  8. else:
  9. return n * factorial(n - 1)
  10.  
  11. factorial(n)
  12. """
  13.  
  14. tail_recursive_code = """
  15. def factorial(n, result=1):
  16. if n == 0:
  17. return result
  18. else:
  19. return factorial(n - 1, result * n)
  20.  
  21. factorial(n)
  22. """
  23.  
  24. tail_recursion_eliminated_code = """
  25. from trlib import tail_recursion
  26.  
  27. @tail_recursion
  28. def factorial(n, result=1):
  29. from trlib import recurse as factorial
  30. if n == 0:
  31. return result
  32. else:
  33. return factorial(n - 1, result * n)
  34.  
  35. factorial(n)
  36. """
  37.  
  38. number = 10000
  39. for varname in ('recursive_code', 'tail_recursive_code',
  40. 'tail_recursion_eliminated_code'):
  41. statement = globals()[varname]
  42. timer = timeit.Timer(stmt=statement, setup='n = 800')
  43. time = timer.timeit(number=number)
  44. print(varname)
  45. print('{:.3f} ms/pass\n'.format(time / number * 1000))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement