You are climbing a stair case. It takes n steps to reach to the top.
Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?
Note: Given n will be a positive integer.
给定楼梯的台阶数,一次上1级或者2级,求总共不同的上楼梯方法。
这类问题关键在于推导出状态方程。
f(1) = 1
f(2) = 2
f(3) = f(1) + f(2)
……
f(n) = f(n-1) + f(n-2)
故而有:
def climb_stairs(self, n):
if n == 1:
return 1
last, now = 1, 2
for i in range(2, n):
last, now = now, last + now
return now