天天看點

劍指offer(牛客)---8.跳台階

題目描述

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

首先根據從1級台階-->2級台階-->3級台階-->....

    得到規律:1-->2-->3-->5-->...

從規律可以發現,台階的跳法剛好滿足了斐波那契數列;

這樣的話可以采用兩種方式求解:

第一種遞歸方式:

public static int JumpFloor(int target) {
    	if(target<=2) {
    		return target;
    	}
		return JumpFloor(target-1)+JumpFloor(target-2);
    }
           

第二種疊代方式:

public  int JumpFloor(int target) {
    	if(target<=2) {
    		return target;
    	}
    	int[] arr=new int[target];
    	arr[0]=1;
    	arr[1]=2;
    	for(int i=2;i<target;i++) {
    		arr[i]=arr[i-1]+arr[i-2];
    	}
		return arr[target-1];
    }
           

總結:遞歸方式運作時間為300,疊代方式運作時間為13;在盡量不使用遞歸的前提下不要使用遞歸方式;

繼續閱讀