題目描述:
一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。
題目解析:
當只有一節臺階的時候由於每次只能跳一級或者兩級,則只有一種方式,即f(1) = 1;如果有兩個臺階則有f(2) = 2;
如果有n個臺階,第一次跳了1節,則剩下的方式爲f(n-1),如果第一次跳了2節,則剩下的爲f(n-2),所以f()=f(n-2)+f(n-1);
可以看出來最後會變成一個斐波那契數列。在通過迭代的方式計算斐波那契數列就行了
AC代碼:
public class Solution {
public int JumpFloor(int target) {
if(target == 0){
return 0;
}
if(target == 1){
return 1;
}
if(target == 2){
return 2;
}
int i1 = 1,i2 = 2;
int floor = 0;
for(int i = 3;i <= target;i++){
floor = i2 + i1;
i1 = i2;
i2 = floor;
}
return floor;
}
}