问题:一只青蛙一次可以跳上1级台阶,也可以跳上2级,求该青蛙跳上一个n级的台阶总共有多少种跳法。
思路:当n=1时,总跳法m = 1;
当n=2时,总跳法m = 2
当n=3时,假设这只青蛙只差一步就能跳到第3阶,那它现在就两种情况,要么在第1阶,要么在第2阶,那青蛙跳上第三阶的总跳法就应该是这两种之和,即m = 1+2 (青蛙到达第1阶有1种方法,到达第2阶有2种方法)。
同理,可知n>=3时,m = f(n) = f(n-1) + f(n-2); 类似于斐波拉契数列的第n项。
具体代码:(C++)
class Solution:
{
public:
int jumpFloor(int num)
{
if(num == 1)
return 1;
int pre1 =1, pre2 = 1;
int cur;
for(int i=2;i<=num;i++)
{
cur = pre1 + pre2;
pre2 = pre1;
pre1 = cur;
}
return cur;
}
};