我们先来观察一下
跳到台阶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(𝑎,𝑏)) 的方案数

京公网安备 11010502036488号