次の方法で共有


再帰プロシージャ (Visual Basic)

再帰プロシージャは、それ自体を呼び出すプロシージャです。 一般に、これは Visual Basic コードを記述する最も効果的な方法ではありません。

次の手順では、再帰を使用して元の引数の階乗を計算します。

Function Factorial(n As Integer) As Integer
    If n <= 1 Then
        Return 1
    End If
    Return Factorial(n - 1) * n
End Function

再帰プロシージャに関する考慮事項

制限条件。 再帰を終了できる少なくとも 1 つの条件をテストするように再帰プロシージャを設計する必要があります。また、適切な数の再帰呼び出し内でそのような条件が満たされない場合も処理する必要があります。 失敗せずに満たすことができる条件が少なくとも 1 つない場合、プロシージャは無限ループで実行されるリスクが高くなります。

メモリ使用量。 アプリケーションには、ローカル変数の領域が限られています。 プロシージャがそれ自体を呼び出すたびに、そのローカル変数の追加コピーに、その領域の多くが使用されます。 このプロセスが無期限に続くと、最終的に StackOverflowException エラーが発生します。

効率。 ほとんどの場合、再帰の代わりにループを使用できます。 ループには、引数の受け渡し、追加のストレージの初期化、および値の戻り値のオーバーヘッドはありません。 再帰的な呼び出しを行わないと、パフォーマンスが大幅に向上する可能性があります。

相互再帰。 2 つのプロシージャが相互に呼び出す場合は、パフォーマンスが非常に低いか、無限ループが発生する可能性があります。 このような設計では、1 つの再帰プロシージャと同じ問題が発生しますが、検出とデバッグが困難になる場合があります。

かっこを使用した呼び出しFunction プロシージャがそれ自体を再帰的に呼び出す場合は、引数リストがない場合でも、プロシージャ名にかっこを付けなければなりません。 それ以外の場合、関数名は関数の戻り値を表すものとして使用されます。

テスト。 再帰プロシージャを記述する場合は、常にいくつかの制限条件を満たしていることを確認するために、非常に慎重にテストする必要があります。 また、再帰呼び出しが多すぎるため、メモリが不足しないようにする必要があります。

こちらも参照ください