斐波那契數列的兩種解題思路:遞迴VS迭代
阿新 • • 發佈:2018-11-26
一、問題描述
要求輸入一個整數n,請你輸出斐波那契數列的第n項
二、演算法分析
給出一系列斐波拉契數列:0 1 1 3 5 8 13 21 。。。
通過觀察,很容易發現:
1 n=0,1
f(n) = f(n-1)+f(n-2) n>1
三、演算法設計
遞迴法:根據遞迴公式實現遞迴函式
缺點:遞迴過程中會包含很多重複的運算,所以效率不高
迭代法:迭代的思想就是不斷地用變數的舊值遞推新值的過程。迭代法相對於遞迴效率要高,因為節省了重複計算
四、編碼實現
(1)遞迴法
public int Fibonacci(int n) {
if(n<=1)
return n;
else
return Fibonacci(n-1)+Fibonacci(n-2);
}
(2)迭代法
public int Fibonacci1(int n){ int f0 = 0; int f1 = 1; int currentNum=0; if(n<=1){ return n; } for(int i=2; i<=n;i++){ currentNum = f0 + f1; f0 = f1; f1 = currentNum; } return currentNum; }