变态版跳台阶(递归方法思路)

public class Solution {
    public int JumpFloorII(int target) {
        if(target==1)
        {
            return 1;
        }
        else
        {
            return 2*JumpFloorII(target-1);
        }
    }
}

  代码简单,主要思路如下:

假设 跳到第n阶台阶的次数为f(n)次;

从第n-1阶台阶跳到第n阶的可能仅一种,即f(n-1)种方法;

从第n-2阶台阶跳到第n阶的可能有两种:1.先跳一步,再跳一步;2.直接跳两步。第一种包含于上面情况,故仅剩第二种,有f(n-2)中方法;

。。。

从第1阶台阶跳到第n阶有f(1)种方法。

 

剩余用通项公式:f(n)=f(n-1)+f(n-2)+。。。+f(1)=S(n-1)

                           f(n-1)=S(n-2)

两个式子相减。

再移向f(n)=2f(n-1);

仅存在参数差值为1的关系

故特例分析n=1的情况;

 

posted @ 2019-06-05 10:28  waltray  阅读(253)  评论(0)    收藏  举报