Code Explanation:
Importing lru_cache from functools
from functools import lru_cache
This line imports lru_cache from Python's functools module.
lru_cache is used to cache results of function calls to avoid redundant calculations.
Useful for recursive functions like Fibonacci, which this problem is similar to.
Function Definition with Memoization
@lru_cache(None)
This is a decorator that applies caching to the function.
@lru_cache(None) means there’s no limit on the number of stored results (infinite cache size).
def climb_stairs(n):
Defines a function climb_stairs that takes an integer n (number of steps).
Base Case for Recursion
if n <= 2:
return n
This is the base case:
If there's 1 step, there's only 1 way to climb: (1)
If there are 2 steps, there are 2 ways: (1+1) or (2)
So for n = 1 → returns 1, for n = 2 → returns 2.
Recursive Case
return climb_stairs(n - 1) + climb_stairs(n - 2)
For n > 2, the number of ways to climb n steps is the sum of:
Ways to climb n-1 steps (then take 1 step)
Ways to climb n-2 steps (then take 2 steps)
This mirrors the Fibonacci sequence.
Calling the Function
print(climb_stairs(5))
Calls climb_stairs(5)
The function computes:
climb_stairs(5)
= climb_stairs(4) + climb_stairs(3)
= (climb_stairs(3) + climb_stairs(2)) + (climb_stairs(2) + climb_stairs(1))
...
With memoization, repeated calls like climb_stairs(2) are cached.
Final Output
The number of ways to climb 5 stairs is:
8
.png)

0 Comments:
Post a Comment