

'' 斐波那契数列, 不是被波那契数列。
Dim n As Integer
Dim tmp As String
Dim lngFBNQ() As Long
'' 给界面元素指定一个有意义的名称,可以方便维护。
n = CInt(TextBox1.Text)
'' 不是i = n - 1
n = n - 1
'' 你的越界是因为你的数组长度定义为2。
'' 你的所有元素均已重新赋值,不应当使用Preserve关键字。
'' 且只需指定大小完全可以满足要求。
'' 以上两点可以提升效率。
ReDim lngFBNQ(n)
lngFBNQ(0) = 1
lngFBNQ(1) = 1
'' tmp的理论值应当是“1,1,”,即应当包含前两个1。
tmp = ""
For i As Integer = 2 To n
lngFBNQ(i) = lngFBNQ(i - 1) + lngFBNQ(i - 2)
'' 应当避免在循环里面为修改界面,以提高速度。
tmp &= lngFBNQ(i) & ","
Next
'' 此处理论上应当用=号替代&=。
TextBox2.Text &= tmp