處理斐波那契數列兩種方式(詳解,C語言)

2021-10-05 17:01:04 字數 1171 閱讀 7552

fibonacci數列特點:

第1、2兩個數為1、1,從第3個數開始,該數是其前面兩個數之和。

斐波那契數列可以用一下數學形式表示:

f(1)

= 1 當(n = 1)時

f(2)

= 1 當(n = 2)時

...f(n)

= f(n - 1) + f(n - 2) 當(n >= 3)時

1、1、2、3、5、8、13…

方法一:迭代方式

使用f1 和 f2 兩個迭代變數,使用迴圈處理,在一次迴圈中遞推出數列中後面兩個數。

程式**

#include

intmain

(void

)return0;

}

注:遞推常表現為迭代,即由乙個變數的原值推出它的新值(如上面程式中的f1、f2變數),或者說,不斷地用乙個新值代替變數的原值。

執行結果

方法二:陣列方式

讓每個陣列元素代表斐波那契數列中的乙個數,按遞推方法依次求出各個數,並順序存放在相應的陣列元素中。

程式**

#include

intmain

(void);

//其餘元素預設置0

for(i =

2; i <

20; i++

) f[i]

= f[i-2]

+ f[i-1]

;//從前面兩個元素推導出當前元素

for(i =

0; i <

20; i++

)printf

("\n");

return0;

}

執行結果

從表面上看,兩個程式都能正確求出並輸出結果,但第一種方式順序求出並輸出各個數後,不能儲存這些資料。而陣列處理時,把每個數都儲存在了陣列中,如果想要單獨輸出第8個數,是很容易的,這是兩種方式最大區別。

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

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

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

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

斐波那契數列的兩種優化

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