1. 程式人生 > >青蛙跳臺階問題 java實現

青蛙跳臺階問題 java實現

解題思路:

一隻青蛙一次可以跳上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;

    }

}