剑指offer 09变态跳台阶

Posted yyfyl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer 09变态跳台阶相关的知识,希望对你有一定的参考价值。

一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
java版本:
public class Solution {

    public  static void main(String[] args){
        long startTime=System.currentTimeMillis();
        System.out.println("第4项的结果是:"+JumpFloorII(4));
        long endTime=System.currentTimeMillis();
        System.out.println("程序执行的时间:"+(endTime-startTime)+"ms");
    }
    /*递归*/
    public static int JumpFloorII(int target){
        if(target==1){
            return 1;
        }else{
            return 2*JumpFloorII(target-1);
        }
    }
    /*左移*/
    /*public static int JumpFloorII(int target){
            int a=1;
            return a<<(target-1);
    }*/
    
}

js版本:

function jumpFloorII(number)
{
    if(number==1){
        return number;
    }else{
          return 2*jumpFloorII(number-1);      
    }// write code here
}

总结:用递归的思路

第一步可以跳1阶,跳2阶.......可以跳n阶,有n种跳法。

第二步剩余(n-1)个台阶,f(n-1)种跳法。

第三步剩余(n-2)个台阶,f(n-2)种跳法。

所以

f(n)=f(n-1)+f(n-2)+.........f(1)      

f(n-1)=f(n-2)+f(n-3)+.........f(1) 

两式相减得到发f(n)=2*f(n-1)。

左移思路:

每一项的结果都是上一项的2倍,所以左移1位。

 

以上是关于剑指offer 09变态跳台阶的主要内容,如果未能解决你的问题,请参考以下文章

剑指offer---09---动态规划:变态跳台阶

剑指offer:变态跳台阶

剑指offer 9.变态跳台阶

剑指offer 变态跳台阶

剑指OFFER变态跳台阶

剑指Offer-Java-变态跳台阶