Guest User

Untitled

a guest
Feb 19th, 2018
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.05 KB | None | 0 0
  1. import logging
  2.  
  3. steps = 0
  4.  
  5. def fibonacci_recursive(n):
  6. global steps
  7. steps += 1
  8. if n is 0:
  9. return 0
  10. elif n < 3:
  11. return 1
  12. else:
  13. return fibonacci_recursive(n - 2) + fibonacci_recursive(n - 1)
  14.  
  15. def fibonacci_dp(n):
  16. global steps
  17. f0, f1 = 0, 1
  18. for i in xrange(1, n):
  19. steps += 1
  20. f0, f1 = f1, f0 + f1
  21. return f1
  22.  
  23. def fibonacci(n):
  24. """
  25. >>> fibonacci(1)
  26. 1
  27. >>> fibonacci(2)
  28. 1
  29. >>> fibonacci(3)
  30. 2
  31. >>> fibonacci(4)
  32. 3
  33. >>> fibonacci(5)
  34. 5
  35. >>> fibonacci(6)
  36. 8
  37. >>> fibonacci(20)
  38. 6765
  39. """
  40. global steps
  41. steps = 0
  42. #ret = fibonacci_recursive(n)
  43. ret = fibonacci_dp(n)
  44. return ret
  45.  
  46. if __name__ == '__main__':
  47. import doctest
  48. logging.basicConfig(
  49. level=logging.INFO,
  50. format="%(message)s")
  51. doctest.testmod(verbose=False)
  52.  
  53. logging.info("n\tfib\tsteps")
  54. for i in xrange(1, 31):
  55. ret = fibonacci(i)
  56. logging.info("%d\t%d\t%d" % (i, ret, steps))
Add Comment
Please, Sign In to add comment