在數(shù)列中,除前兩個(gè)數(shù)外,每個(gè)元素都是前兩個(gè)元素的和,例如:
0,1,1,2,3,5,8,13,21,34,55,89,……
稱之為斐波那契(Fibonacci)數(shù)列。
通用定義為:
斐波那契數(shù)列有許多用途,并且具有許多有趣的屬性,例如斐波那契數(shù)列的商:
可以發(fā)現(xiàn),前后元素的比例符合黃金分割法。
下面,我們編寫一個(gè)程序,在Excel工作表中打印出斐波那契數(shù)以及它的商。
程序代碼如下:
Sub Fibonacci()Dim f0 As Long, f1 As LongDim strNum As StringDim Max As Long, temp As LongDim n As Long strNum = InputBox(Prompt:="請輸入Fibonacci數(shù)列的數(shù)字:") f0 = 0f1 = 1 If IsNumeric(strNum) ThenMax = CLng(strNum)Range("A1") = "數(shù)字序號"Range("B1") = "數(shù)字"Range("C1") = "商"Range("A2") = 0Range("B2") = 0Range("A3") = 1Range("B3") = 1For n = 2 To Maxtemp = f1f1 = f1 + f0f0 = tempRange("A" & n + 2) = nRange("B" & n + 2) = f1Range("C" & n + 2) = f1 / f0Next nElseMsgBox "您沒有輸入數(shù)字!程序退出!"End IfEnd Sub
其中,變量f1包含當(dāng)前斐波那契數(shù)的值,f0包含前一個(gè)斐波那契數(shù)的值。
在For循環(huán)中:
- 將f1(即當(dāng)前的斐波那契數(shù))的值保存到一個(gè)臨時(shí)變量中。
- 將f0和f1相加,并將結(jié)果保存到f1中,這就是新的斐波那契數(shù)。
- 在f0中存儲臨時(shí)變量的值,即f0就是前一個(gè)斐波那契數(shù)。
- 將結(jié)果輸出到工作表中,并重復(fù)這個(gè)過程。