斐波那契數列迴圈實現
阿新 • • 發佈:2019-02-06
題目描述
大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項。
n<=39
解題思路
f(n)=f(n-1)+f(n-2)
思路1:遞迴實現會進行大量的重複計算,效率很低,可以自己測試下,對於遞迴的話,可以開闢一個數組儲存f(n)的中間計算結果,如果已經計算過則直接返回,避免重複呼叫,可以達到和迴圈相當的效率。
思路2:從小到大計算,迴圈呼叫。時間複雜度O(n)。
public class feibonaqishulie {
public int Fibonacci(int n) {
int n1 = 1;
int n2 = 1;
int n3 = 2;
if (n == 0)
return 0;
if (n == 1)
return 1;
if (n == 2)
return 1;
if (n == 3)
return 2;
for (int i = 3; i < n; i++) {
n1 = n2;
n2 = n3;
n3 = n1 + n2;
}
return n3;
}
public static void main(String[] args) {
System.out.println(new feibonaqishulie().Fibonacci(7));
}
}