Advertisement
Guest User

Untitled

a guest
Apr 26th, 2015
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.23 KB | None | 0 0
  1. function fib(n)
  2. if n = 0 or n = 1
  3. return 1
  4. return fib(n − 1) + fib(n − 2)
  5.  
  6. fib(5)
  7. fib(4) + fib(3)
  8. (fib(3) + fib(2)) + (fib(2) + fib(1))
  9. ((fib(2) + fib(1)) + (fib(1) + fib(0))) + ((fib(1) + fib(0)) + fib(1))
  10. (((fib(1) + fib(0)) + fib(1)) + (fib(1) + fib(0))) + ((fib(1) + fib(0)) + fib(1))
  11.  
  12. >>> def fib_to(n):
  13. ... fibs = [0, 1]
  14. ... for i in range(2, n+1):
  15. ... fibs.append(fibs[-1] + fibs[-2])
  16. ... return fibs
  17. ...
  18.  
  19. >>> fib_to(20)
  20. [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765]
  21.  
  22. >>> fib_to(40)[17]
  23. 1597
  24.  
  25. >>> def fib(n, computed = {0: 0, 1: 1}):
  26. ... if n not in computed:
  27. ... computed[n] = fib(n-1, computed) + fib(n-2, computed)
  28. ... return computed[n]
  29.  
  30. >>> fib(400)
  31. 176023680645013966468226945392411250770384383304492191886725992896575345044216019675
  32.  
  33. import functools
  34.  
  35. @functools.lru_cache(None)
  36. def fib(n):
  37. if n < 2:
  38. return n
  39. return fib(n-1) + fib(n-2)
  40.  
  41. >>> def fib(n):
  42. ... a, b = 0, 1
  43. ... for _ in range(n):
  44. ... a, b = b, a+b
  45. ... return a
  46.  
  47. cache = {}
  48.  
  49. def fib(n):
  50. if n <= 1:
  51. return n
  52. if n not in cache:
  53. cache[n] = fib(n-1) + fib(n-2)
  54. return cache[n]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement