climb_stairs.py 692 B

123456789101112131415161718192021222324252627282930313233343536
  1. # def climbStairs(n: int) -> int:
  2. # if n < 1 or n > 45:
  3. # return 0
  4. # else:
  5. # a = 1
  6. # b = 1
  7. # for i in range(2, n + 1):
  8. # a, b = b, a + b
  9. # return b
  10. # print(climbStairs(4))
  11. def f(n):
  12. cach = {}
  13. def g(n):
  14. if n == 1:
  15. return 1
  16. if n == 2:
  17. return 2
  18. else:
  19. if n-1 in cach:
  20. f1 = cach[n-1]
  21. else:
  22. f1 = g(n-1)
  23. cach[n-1] = f1
  24. if n-2 in cach:
  25. f2 = cach[n-2]
  26. else:
  27. f2 = g(n-2)
  28. cach[n-2] = f2
  29. return f1 + f2
  30. return g(n)
  31. print(f(4))