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...