0

プログラミング言語についてもっと勉強しようとしています。再帰を使用して次のコードを使用しています。スタック例外がスローされるまで実行します。このような深い再帰を防ぐために、エラーをトラップしたり、防御的にコーディングしたりせずに: - このルーチンの実行時にスタック領域を解放するために行うことができる調整はありますか?

Module 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

エンドモジュール

4

1 に答える 1

0

あなたのコードは無制限の再帰をもたらしています。これについて説明しているリンクを参照してください: http://msdn.microsoft.com/en-us/library/system.stackoverflowexception.aspx

リンクは、.NET 2.0 以降、try-catch ブロックでこのタイプの例外をキャッチできないことを示しており、そうでない理由を示しています。

于 2013-02-03T21:19:58.177 に答える