《劍指Offer》遞迴和迴圈--跳臺階
時間限制:1秒 空間限制:32768K 熱度指數:320390
題目描述
一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法(先後次序不同算不同的結果)。
思路:
找規律的方法,f(1) = 1, f(2) = 2, f(3) = 3, f(4) = 5, 可以總結出f(n) = f(n-1) + f(n-2)的規律,但是為什麼會出現這樣的規律呢?假設現在6個臺階,我們可以從第5跳一步到6,這樣的話有多少種方案跳到5就有多少種方案跳到6,另外我們也可以從4跳兩步跳到6,跳到4有多少種方案的話,就有多少種方案跳到6,其他的不能從3跳到6什麼的啦,所以最後就是f(6) = f(5) + f(4);這樣子也很好理解變態跳臺階的問題了。
public class Solution {
public int JumpFloor(int target) {
if(target == 0)
return 0;
if(target == 1)
return 1;
if(target == 2)
return 2;
int one = 1;
int two = 2;
int result = 0;
for(int i = 3; i <= target; i++){
result = one + two;
one = two;
two = result;
}
return result;
}
}