分享

使用VBA列出斐波那契数

 yuxinrong 2010-01-12
 

在数列中,除前两个数外,每个元素都是前两个元素的和,例如:

0,1,1,2,3,5,8,13,21,34,55,89,……

称之为斐波那契(Fibonacci)数列。
通用定义为:
fibonacci1
斐波那契数列有许多用途,并且具有许多有趣的属性,例如斐波那契数列的商:
fibonacci2
可以发现,前后元素的比例符合黄金分割法。
下面,我们编写一个程序,在Excel工作表中打印出斐波那契数以及它的商。
程序代码如下:

Sub Fibonacci()
Dim f0 As Long, f1 As Long
Dim strNum As String
Dim Max As Long, temp As Long
Dim n As Long
 
strNum = InputBox(Prompt:="请输入Fibonacci数列的数字:")
 
f0 = 0
f1 = 1
 
If IsNumeric(strNum) Then
Max = CLng(strNum)
Range("A1") = "数字序号"
Range("B1") = "数字"
Range("C1") = "商"
Range("A2") = 0
Range("B2") = 0
Range("A3") = 1
Range("B3") = 1
For n = 2 To Max
temp = f1
f1 = f1 + f0
f0 = temp
Range("A" & n + 2) = n
Range("B" & n + 2) = f1
Range("C" & n + 2) = f1 / f0
Next n
Else
MsgBox "您没有输入数字!程序退出!"
End If
End Sub

其中,变量f1包含当前斐波那契数的值,f0包含前一个斐波那契数的值。
在For循环中:

  • 将f1(即当前的斐波那契数)的值保存到一个临时变量中。
  • 将f0和f1相加,并将结果保存到f1中,这就是新的斐波那契数。
  • 在f0中存储临时变量的值,即f0就是前一个斐波那契数。
  • 将结果输出到工作表中,并重复这个过程。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多