题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
思路:跳上一个n级的台阶需要先跳1级或2两级台阶,所以可得 :f(n) = f(n-1) + f(n-2);这是斐波那契数列,递归写法效率太低,还有栈溢出的风险,所以用迭代写法比较好,用两个变量记录数列中的相邻两个值,计算当前值之后再把这两个变量后移。代码如下:
class Solution {
public:
int jumpFloor(int number) {
if(number <= 0) return 0;
if(number == 1) return 1;
int first = 1;
int second = 2;
int third = 2;
for(int i = 3;i <= number;++i){
third = first + second;
first = second;
second = third;
}
return third;
}
};