题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
思路:
1、设跳上n级台阶的跳法为f(n)。
2、对于跳上n级台阶,可以看做从n-1级的位置再跳一级,或者从n-2级的位置再跳两级,所以跳上n-1和n-2级台阶的跳法相加就是跳上n级台阶的跳法。
3、则有:f(n)=f(n-1)+f(n-2);
4、注意边界条件,f(2)=f(1)+f(0),且显然f(2) = 2,f(1) = 1,且当n > 2时,求f(n)不需要f(0),所以f(0)可以取1;也可以直接以f(2) = 2,f(1) = 1为边界,直接不考虑f(0)。
解法1:递归。
解法2:动态规划,逐步求出跳1级台阶到跳10级台阶的跳法。
int jumpFloor(int number ) {
if(1 >= number) return 1;
return jumpFloor(number-1)+jumpFloor(number-2);
}
int jumpFloor(int number ) {
if(1 == number) return 1;
int a = 1, b = 1, t;
for(int i=2; i<=number; i++)
{
t = a+b;
a = b;
b = t;
}
return b;
}