Visual Studio-VB.Net-引发堆栈错误

Visual Studio-VB.Net-引发堆栈错误,vb.net,Vb.net,我正在努力学习更多关于编程语言的知识。 我正在使用以下使用递归的代码。 我使它运行,直到抛出堆栈异常。 无需追踪错误和/或防御性编码以防止 这么深的递归:-我能做些调整吗 运行此例程时释放任何堆栈空间 模块1 私有变量为整数=1 Sub Main() Take1(var) End Sub Public Function Take1(p1 As Integer) As Integer p1 = p1 + 1 Console.Write(p1 & vbCrLf)

我正在努力学习更多关于编程语言的知识。 我正在使用以下使用递归的代码。 我使它运行,直到抛出堆栈异常。 无需追踪错误和/或防御性编码以防止 这么深的递归:-我能做些调整吗 运行此例程时释放任何堆栈空间

模块1 私有变量为整数=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

结束模块

您的代码将导致无限递归。请参阅此处描述此内容的链接:


该链接表示,从.NET 2.0开始,您无法使用try-catch块捕获此类异常,并给出了不捕获的充分理由。

Um,不-您有一对相互递归的函数,没有停止点。如果不将其适当地停止,您将如何期望它被回收?(我不确定我会称之为“防御性编码”——它更像是“指定终止点”。)您希望代码继续递归到什么程度?