问题描述:🐸一次可以跳1级台阶,也可以跳2级台阶,问🐸跳上n级台阶有多少种跳法。
寻找递推关系:
1.如果第一次跳1阶,那剩下的可能跳法有F(n-1)种。
- 如果第一次跳2阶,剩下F(n-2)种跳法。
- 由(1)、(2)推知,F(n) = F(n-1) + F(n-2),其中F(1) = 1, F(2) = 2
迭代版
int jumpFloor(int n)
{
if(n<1)
return 0;
if(n==1 || n==2)
return n;
int f1 = 1;
int f2 = 2;
int count = 3;
int res = 0;
while(count<=n)
{
res = f1+f2;
f1 = f2;
f2 = res;
}
return res;
}
递归版
int jumpFloor(int n)
{
if(n == 1 || n == 2)
return n;
else
return jumpFloor(n-1) + jumpFloor(n-2);
}
网友评论