VB问题~!~!~!救命

来源:百度知道 编辑:UC知道 时间:2024/06/03 16:01:46
Private Sub Command2_Click()

Dim n As Integer, s As Long

s = 0
For n = 1 To 36
s = s + fac(n)
Next
Print s

End Sub

Function fac(ByVal n As Long) As Long
Dim f As Long, i As Long
f = 1
For i = 1 To n
f = f * i
Next
fac = f
End Function

为什么这都会溢出,高手帮帮忙,谢了

因为你的结果太大了 ,已经超出了,long类型的范围了。应讲题目中的 long类型改成double类型的。
Private Sub Command2_Click()
Dim n As Integer, s As Double
s = 0
For n = 1 To 36
s = s + fac(n)
Next
Print s

End Sub

Function fac(ByVal n As Double) As Double
Dim f As Double, i As Long
f = 1
For i = 1 To n
f = f * i
Next
fac = f
End Function
你自己试一下哦。