题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
思路:
台阶 | 次数 |
---|---|
1 | 1 |
2 | 2 |
3 | 3 |
4 | 5 |
5 | 8 |
··· | ··· |
n | f(n-2)+f(n-1) |
由列表可知就是斐波那契数列的变形
class Solution {
public:
int jumpFloor(int number) {
if(number < 1)
return 0;
else if(number == 1 )//一阶台阶一种方法
return 1;
else if(number == 2)//二阶台阶两种方法
return 2;
else{//pre和res为两个前驱
int pre = 1;//第一个前驱
int res = 2;//第二个前驱
int tmp = 0;
for(int i = 3; i <= number; i++){
tmp = res;
res = pre + res;//f(3) = f(1) + f(2)
pre = tmp;
}
return res;
}
}
};