一次可以跳一级,也可以跳2级…也可以跳上n级呢一次可以跳一级,也可以跳2级…也可以跳上n级呢

思路
  1. 如果台阶级数为n的话,这时我们把n级台阶时的跳法看成n的函数,记为青蛙跳台阶 - 图1,第一次跳的时候有n种不同的选择:若是第一次跳一级,此时跳法的数目等于后面剩下的n-1级台阶的跳法数目,即为青蛙跳台阶 - 图2,若是第一次跳m(m<n)级,此时跳法的数目等于后面剩下的n-m级台阶的跳法数目,即为青蛙跳台阶 - 图3,若是第一次跳n级,此时跳法的数目等于1.所以 青蛙跳台阶 - 图4
  2. 因此青蛙跳台阶 - 图5
  3. 两式相减得到 青蛙跳台阶 - 图6
  4. 因此可以得到下面的结果
    青蛙跳台阶 - 图7

答案

若把条件修改成一次可以跳一级,也可以跳2级…也可以跳上n级呢,则青蛙跳台阶 - 图8

递归法:

  1. def climbStairs(self, n):
  2. if n==1:
  3. return 1
  4. elif n==2:
  5. return 2
  6. else:
  7. return self.climbStairs(n-1)+self.climbStairs(n-2)

数学公式法:

  1. def frog(num):
  2.     if num==0:
  3.       return 0
  4.     return 2**(num-1)