《剑指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)。

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