我正在努力学习有关编程语言的更多信息。 我使用Recursion使用以下代码。 我让它一直运行,直到抛出一个堆栈异常。 没有陷阱错误和/或防御性编码以防止 如此深刻的递归: - 我可以做出调整吗? 在这个例程运行时释放任何堆栈空间?
模块Module1 Private var As Integer = 1
Sub Main()
Take1(var)
End Sub
Public Function Take1(p1 As Integer) As Integer
p1 = p1 + 1
Console.Write(p1 & vbCrLf)
Take1 = Nothing
Call Take2(p1)
End Function
Public Function Take2(p1 As Integer) As Integer
p1 = p1 + 1
Console.Write(p1 & vbCrLf)
Take2 = Nothing
Call Take1(p1)
End Function
结束模块
答案 0 :(得分:0)
您的代码导致无限递归。请参阅此处描述的链接:http://msdn.microsoft.com/en-us/library/system.stackoverflowexception.aspx
链接是说从.NET 2.0开始你不能用try-catch块捕获这种类型的异常,并给出了很好的理由。