今日碎碎念: 下雨了,白噪声真的很容易让人想要睡觉~
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
解题分析
这一题实际上很像前面的 斐波那契数列。
1.递归
小青蛙在1阶有1种跳法:从0直接蹦1格到1;
小青蛙在2阶有2种跳法:
- 从0蹦1格到1;从1蹦1格到2;
- 从0蹦2格到2;
小青蛙在3阶的最后一次跳:可能来自2阶蹦1格,也可能是1阶蹦2格;
小青蛙在n阶的最后一次跳:可能来自n-1阶蹦1格,也可能是n-2阶蹦2格;
以此递推。
2.循环【同前一题 斐波那契数列】
代码实现
方法一:递归
class Solution {
public:
int jumpFloor(int number) {
int result;
if(number==1){return 1;}
else if(number==2){return 2;}
else{
result=jumpFloor(number-1)+jumpFloor(number-2);
return result;
}
}
};
方法二:循环
class Solution {
public:
int jumpFloor(int number) {
int result;
int pre1=1;
int pre2=2;
if(number==1){return pre1;}
else if(number==2){return pre2;}
for(int i=2;i<number;i++){
result = pre1+pre2;
pre1 = pre2;
pre2 = result;
}
return result;
}
};
结果