我们先来观察一下
跳到台阶1的方案:
① 0⇒1
跳到台阶2的方案:
① 0⇒1⇒2
② 0⇒2
跳到台阶3的方案:
① 0⇒1⇒2⇒3
② 0⇒2⇒3
③ 0⇒1⇒3
跳到台阶4的方案:
① 0⇒1⇒2⇒3⇒4
② 0⇒2⇒3⇒4
③ 0⇒1⇒3⇒4
④ 0⇒1⇒2⇒4
⑤ 0⇒2⇒4
可以发现:
跳到台阶4的方案是从台阶3跳1级或从台阶2跳2级
设:𝐹(𝑛) 表示跳到台阶 𝑛 (n>2) 的方案数,
则 𝐹(𝑛)=𝐹(𝑛−1)+𝐹(𝑛−2)
C++版本代码:

class Solution {
public:
    int jumpFloor(int number) {
        if(number <= 2){return number;}
        int f1,f2,ans;
        f1=1;f2=2;//f1,f2分别表示f(n-1)和f(n-2)
        for(int i = 3 ; i <= number ;i++)//从f(3)递推到f(n)
        {
            ans = f1+f2;
            f1 = f2;
            f2 = ans;
        }
        return ans;
    }
};

python版本代码:

class Solution:
    def jumpFloor(self, number):
        if number<=2:
            return number
        f1 = 1
        f2 = 2
        for i in range(3,number+1):
            ans = f1+f2
            f1 = f2
            f2 = ans
        return ans

如果对问题进行一下扩展
一只青蛙一次可以跳上a级台阶,也可以跳上b级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 (a<b)
设:𝐹(𝑛) 表示跳到台阶 𝑛 (n>max(𝑎,𝑏)) 的方案数