青蛙跳臺階問題 java實現
阿新 • • 發佈:2019-01-25
解題思路:
一隻青蛙一次可以跳上1級臺階,也可以跳上兩級。現在需要求跳上n級臺階總共有多少種跳法。把n級臺階的跳的次數看成是n的函式,即為f(n),當n>2時,第一次跳有兩種跳法,若第一次跳1級,則該次跳法數目為後面剩下的n-1級臺階的跳法數目f(n-1)。若第一次跳2級,則該次跳法數目為後面剩下的n-2級臺階的跳法數目f(n-2)。所以f(n)=f(n-1) + f(n-2),即相當於斐波那契數列。
public class Solution { public int JumpFloor(int target) { //青蛙跳臺階,一次可以跳上1級臺階,也可以跳上2級臺階 if (target == 1) { return 1; } if(target == 2) { return 2; } //一個n級臺階,第一次跳有兩種選擇, //一是第一次跳1級,那麼跳法數目等於後面剩下的n-1級臺階的跳法數目 //二是第一次跳2級,那麼跳法數目等於後面剩下的n-2級臺階的跳法數目 //一個n級臺階總的跳法數目為f(n-1) + f(n-2),相當於斐波那契數列 int first = 1; int last = 2; int sum = 0; for (int i = 3; i <= target; i++) { sum = first + last; //將上次的last作為下一次的first first = last; //將上次的結果作為last last = sum; } return sum; } }