《劍指Offer》第二版之斐波那契數列(七)

目錄


題目:
求斐波那契數列的第n項。
思路:
先把已經得到的數列中間項保存起來,在下次需要計算的時候我們先查找一下,如果前面已經計算就不要在重複計算了。
步驟:
1.首先根據f(0)和f(1)算出f(2)。
2.再根據f(1)和f(2)算出f(3)......以此類推就可以算出第n項了。
代碼:
package test;

public class Fibonacci {

	public static void main(String[] args) {
		System.out.println(fibo(5));
	}
	
	public static long fibo(int n) {
		int[] result = {0, 1};
		if(n < 2)
			return result[n];
		
		long fibNMinusOne = 1;
		long fibNMinusTwo = 0;
		long fibN = 0;
		for (int i = 2; i <= n; i++) {
			fibN = fibNMinusOne + fibNMinusTwo;
			fibNMinusTwo = fibNMinusOne;
			fibNMinusOne = fibN;
		}
		
		return fibN;
	}
}

注:該算法的時間複雜度爲O(n)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章