变态版跳台阶(递归方法思路)
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的情况;