一次可以跳一级,也可以跳2级…也可以跳上n级呢一次可以跳一级,也可以跳2级…也可以跳上n级呢
思路
- 如果台阶级数为n的话,这时我们把n级台阶时的跳法看成n的函数,记为,第一次跳的时候有n种不同的选择:若是第一次跳一级,此时跳法的数目等于后面剩下的n-1级台阶的跳法数目,即为,若是第一次跳m(m<n)级,此时跳法的数目等于后面剩下的n-m级台阶的跳法数目,即为,若是第一次跳n级,此时跳法的数目等于1.所以
- 因此
- 两式相减得到
- 因此可以得到下面的结果
答案
若把条件修改成一次可以跳一级,也可以跳2级…也可以跳上n级呢,则
递归法:
def climbStairs(self, n):
if n==1:
return 1
elif n==2:
return 2
else:
return self.climbStairs(n-1)+self.climbStairs(n-2)
数学公式法:
def frog(num):
if num==0:
return 0
return 2**(num-1)