/*跳台阶*/
/*一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶共有多少种跳法。*/
/*思路:将跳法f设为台阶数n的函数,f(n).
如果台阶数小于等于0,那么0种跳法。
如果跳上1级台阶,那么1种跳法。
如果跳上2级台阶,那么可以一次跳1级,也可以一次跳2级,一共2种跳法。
如果跳上3级台阶,那么第一次跳有两种跳法:一次跳1级,则还剩下2级台阶,即有f(2)种跳法;一次
跳2级,则还剩下1级台阶,即有f(1)种跳法。也就是,f(3) = f(2) + f(1).
/*一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶共有多少种跳法。*/
/*思路:将跳法f设为台阶数n的函数,f(n).
如果台阶数小于等于0,那么0种跳法。
如果跳上1级台阶,那么1种跳法。
如果跳上2级台阶,那么可以一次跳1级,也可以一次跳2级,一共2种跳法。
如果跳上3级台阶,那么第一次跳有两种跳法:一次跳1级,则还剩下2级台阶,即有f(2)种跳法;一次
跳2级,则还剩下1级台阶,即有f(1)种跳法。也就是,f(3) = f(2) + f(1).
以此类推,f(n) = f(n-1) + f(n-2)。这道题就是一个变形的斐波那契数列。类似于第7题。*/
class Solution {
public:
int jumpFloor(int number) {
if(number <= 0)
return 0;
if(number == 1)
return 1;
if(number == 2)
return 2;
int Fibone = 1;
int Fibtwo = 2;
int FibN = 0;
for(int i = 3; i <= number; ++ i){
FibN = Fibone + Fibtwo;
Fibone = Fibtwo;
Fibtwo = FibN;
}
return FibN;
}
};