题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
结题思路:
对n阶台阶,例如3阶台阶,f(3) = f(2) + f(1)
若第一次跳1阶,跳法为f(2)
若第一次跳2阶, 跳法为f(1)
若第一次跳3(共n阶第一次就跳n阶),跳法为1
即f(n) = f(n-1) + f(n-2) + …… + f(2) + f(1) + 1
其实也可以通过化简归纳得到公式,不过即使不化简也能写了
class Solution {
public:
int jumpFloorII(int number) {
int res[] = {0,1};
if(number < 2) return res[number];
int fa = 0, fb = 1, fn = 0;
for(int i = 2; i <= number; i++){
fn = fa + fb + 1;
fa = fa + fb;
fb = fn;
}
return fn;
}
};