题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
解题思路
- 当跳1级台阶时,有1种跳法,设为f(1)。
- 当跳2级台阶时,有2种跳法,设为f(2)。
- 当跳3级台阶时,有3种跳法,发现f(3)=f(2)+f(1),以此类推。
- 当跳n级台阶时,有f(n)=f(n-1)+f(n-2)+ ··· + f(1)。
- 因为f(n-1)=f(n-2)+ ··· +f(1)。
- 所以f(n)=2 * 2f(n-1)。
代码如下:
public class Solution {
public int JumpFloorII(int target) {
if(target == 1){
return 1;
}else if(target == 2){
return 2;
}else {
return 2*JumpFloorII(target-1);
}
}
}
运行效果如下: