描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶(n为正整数)总共有多少种跳法。
示例1
输入:
3
返回值:
4
解题思路
这青蛙的腿可以大幅度伸缩了,脑海里出现了一只长腿蛙兽,背着手在跳台阶。。。
咳,开始分析(参考了其他人的思路)
设n级台阶有f(n)种跳法
最后一次跳台阶的数目可以分解为:
-----最后一次跳1级,前面需要跳n-1级,有f(n−1) 种跳法
-----最后一次跳2级,前面需要跳n-2级,有f(n−2) 种跳法
-----最后一次跳3级,前面需要跳n-3级,有f(n−3) 种跳法
。。。。依此类推
-----最后一次跳n级,前面需要跳0级,有f(0) 种跳法
f(n) = f(n−1) + f(n−2) + f(n−3) + ... + f(2) + f(1) + f(0)
f(n−1) = f(n−2) + f(n−3) + ... + f(2) + f(1) + f(0)
两式相减:f(n) = 2f(n−1)
public class Solution {
public int jumpFloorII(int target) {
if(target == 0){
return 0;
}
if(target == 1){
return 1;
}
return 2 * jumpFloorII(target - 1);
}
}
这道题的思路比较重要~