題目描述
一隻青蛙一次可以跳上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;在盡量不使用遞歸的前提下不要使用遞歸方式;