剑指08-跳台阶

题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。


设n级的台阶的跳法数表示为F(n)

  • 按第一次跳的台阶数,可以将跳法空间分为互斥且互补的两个空间
    • 第一次跳1级台阶,剩余的跳法有F(n-1)
    • 第二次跳2级台阶,剩余的跳法有F(n-2)
  • 因此有递归公式F(n) = F(n-1)+F(n-2),其中F(1) = 1,F(2) = 2
1
2
3
4
5
6
7
8
class Solution:
def jumpFloor(self, number):
# write code here
a, b = 1, 1
while number:
a, b = a + b, a
number -= 1
return b