堆栈空间溢出解决方案
堆栈空间溢出
n最大只能取到5704,取5705就溢出了.。。。
当n的值过大时,程序提示堆栈空间溢出,请问怎么修改???
------解决方案--------------------
VB的栈空间只有1M,大的递归时,栈溢出是经常不可避免的,换一种算法,消除递归,再说,递归是低效的
------解决方案--------------------
Private Function s(n As Long) As Double
dim i as long, p as double
p = 1
for i = 2 to n
p = p * i
next
s = p
end function
------解决方案--------------------
没事别乱用递归。人不能迂腐。
------解决方案--------------------
可以用循环代替递归.
- VB code
Dim Pi! Private Function s(n As Long) As Double If n = 1 Then s = 1 Else If n Mod 2 = 0 Then s = (-1) / (2 * n - 1) + s(n - 1) Else s = 1 / (2 * n - 1) + s(n - 1) End If End If End Function Private Sub Form_click() Pi = s(5074) Pi = 4 * Pi Print Pi End Sub
n最大只能取到5704,取5705就溢出了.。。。
当n的值过大时,程序提示堆栈空间溢出,请问怎么修改???
------解决方案--------------------
VB的栈空间只有1M,大的递归时,栈溢出是经常不可避免的,换一种算法,消除递归,再说,递归是低效的
------解决方案--------------------
Private Function s(n As Long) As Double
dim i as long, p as double
p = 1
for i = 2 to n
p = p * i
next
s = p
end function
------解决方案--------------------
没事别乱用递归。人不能迂腐。
------解决方案--------------------
可以用循环代替递归.