跳台阶问题
题目
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
分析
分别写出前几次的规律:
f(n=1)=1;
f(n=2)=2;
f(n=3)=3;
f(n=4)=5;
…
f(n)=f(n-1)+f(n-2);(此时n>=3) 当n=1或2时 单独讨论就好,其实就是找规律,多写几组就出来了,到最后发现它就是斐波那契数列。
代码(c++)
class Solution {
public:
int jumpFloor(int number) {
if(number==1)
return 1;
if(number==2)
return 2;
return jumpFloor(number-1)+jumpFloor(number-2);
}
};
变态跳台阶问题
题目
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
分析
问题的本质还是看出规律 所以再次写规律:
f(n=1)=1;
f(n=2)=2;
f(n=3)=4;
f(n=4)=8;
f(n=5)=16;
…
f(n)=2^(n-1);
规律清晰可见
代码(c++)
class Solution
{
public:
int jumpFloorII(int number)
{
int n;
n=pow(2,number-1);
return n;
}
};