1. 程式人生 > >劍指offer 08跳臺階

劍指offer 08跳臺階

stat system int 時間 斐波那契數 耗時 中間 number java版

一只青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。

java版本:

public class Solution {

    public  static void main(String[] args){
        long startTime=System.currentTimeMillis();
        System.out.println("第30項的結果是:"+JumpFloor(30));
        long endTime=System.currentTimeMillis();
        System.out.println(
"程序執行的時間:"+(endTime-startTime)+"ms"); } public static int JumpFloor(int target){ int a=2,b=1,c=0; if(target==1||target==2){ return target; }else{ for(int i=3;i<=target;i++){ c=a+b; b=a; a=c; }
return c; } } /*public static int JumpFloor(int number){ if(number<=0) { return 0; }else if(number>0&&number<4){ return number; }else{ return JumpFloor(number-1)+JumpFloor(number-2); } }
*/ }

js版本:

function jumpFloor(number)
{
    if(number<=0) {
       return 0;
    }else if(number>0&&number<4){
       return number;
    }else{
       return jumpFloor(number-1)+jumpFloor(number-2);
    }
    // write code here
}

總結:和昨天的斐波那契數列思路一致,遞歸的非常消耗時間。建議用存取中間項的形式做。

劍指offer 08跳臺階