斐波那契數列的兩種解題思路 遞迴VS迭代

2021-07-24 07:03:07 字數 536 閱讀 7724

一、問題描述

要求輸入乙個整數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)

(2)迭代法

public int fibonacci1(int n)

for(int i=2; i<=n;i++)

return currentnum;

}

迴圈斐波那契數列 斐波那契數列的兩種實現

最先研究這個數列的人是義大利人斐波那契,leonardo fibonacci,他在描述兔子生長的數目時用上了這數列 每個月兔子的總對數,就是這樣乙個序列 1,1,2,3,5,8,13,21.這個序列從第三項開始,每一項都等於前兩項之和。在數學上,斐波那契數列是以遞迴的方法來定義 f 1 1 f 2 ...

斐波那契數列的兩種優化

遞迴存在許多子問題的重複計算問題,時間複雜度較高。public class fbsl public static intfb int n 首先我們需要乙個全域性的雜湊表來儲存當你第n個數所對應的前兩個數的和。class fb 一旦發現我曾經計算過我就不再遞迴計算,直接返回map集合存的值 if ma...

斐波那契數列 的兩種實現方式

一 先要回答乙個問題 什麼是婓波那契數列?答案在這裡 二 看 1 第一方法 遞迴實現 public static void main string args public static int fibonacci int i else if i 1 return fibonacci i 2 fibo...