VB程序运行出现下标越界的原因

大家帮我看一下下面哪里出错了Dima(50)AsLongPrivateSubCommand1_Click()Dima(40)AsIntegera(1)=1a(2)=1Fo... 大家帮我看一下下面哪里出错了
Dim a(50) As Long

Private Sub Command1_Click()
Dim a(40) As Integer
a(1) = 1
a(2) = 1
For i = 3 To 50
a(i) = a(i - 1) + a(i - 2)
Next i
Text2.Text = a(40)

End Sub
a(i) = a(i-1) + a(i-2) 有什么错误
这道题是一个数列,1,1,2,3,5,8,,,,求第40项的值。请大家帮帮忙解答
展开
 我来答
百度网友39a11c129
2011-09-28 · 超过22用户采纳过TA的回答
知道答主
回答量:80
采纳率:100%
帮助的人:54万
展开全部
最上面的Dim a(50) As Long本没有问题,但是子程序中Dim a(40) As Integer则说明a的下标只能是40(这是优先级的问题,因为你重新定义了,就优先使用这个)。那么For i = 3 To 50能不越界么,呵呵。Dim a(40) As Integer这句话有点多余,可以去掉的。
更多追问追答
追问
去掉之后 ,出现 溢出 错误。怎么办?
追答
必须溢出啊,这个数列很有名的。你想想,2的n次方数列n=50就已经很大了,而这个数列跟2^n出不了多少。你得用双精度型才能满足要求,长整形是绝对不行的。把long该为double
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式