fibonacchi.py 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. def fibonacchi(n: int):
  2. """
  3. Simple fimonacchi func. Very slow
  4. """
  5. if n == 1:
  6. return 1
  7. elif n == 2:
  8. return 1
  9. elif n > 2:
  10. return fibonacchi(n-1) + fibonacchi(n-2)
  11. # MEMOIZATION
  12. # Caches values
  13. fibonacchi_cache = {}
  14. def fibonacchi_2(n:int):
  15. if n in fibonacchi_cache:
  16. return fibonacchi_cache[n]
  17. if n in (1, 2):
  18. value = 1
  19. elif n > 2:
  20. value = fibonacchi_2(n-1) + fibonacchi_2(n-2)
  21. else :
  22. return
  23. fibonacchi_cache[n] = value
  24. return value
  25. from functools import lru_cache
  26. @lru_cache(maxsize=1000)
  27. def fibonacchi_3(n: int):
  28. """
  29. Simple fibonacchi func. Very slow. But we use cache decorator
  30. from functools module
  31. """
  32. if not isinstance(n, int) or n < 1:
  33. raise TypeError("n must be a positive int")
  34. if n in (1, 2):
  35. return 1
  36. elif n > 2:
  37. return fibonacchi_3(n-1) + fibonacchi_3(n-2)
  38. for n in range(1, 1501):
  39. print(n, ":", fibonacchi_3(n))
  40. #print(fibonacchi_3("11.1"))