再帰呼び出し
プロシージャ内で自身のプロシージャを呼び出すことを「再帰呼び出し」と言います。
再帰プロシージャ、再帰処理、再帰関数など呼び方は様々です。
再帰呼び出しを使用したサンプルコード
'■元のプロシージャ Public Sub sample() Call Call_Count(5) 'カウント:5 'カウント:4 'カウント:3 'カウント:2 'カウント:1 End Sub '■再帰処理を行うサブプロシージャ Function Call_Count(ByVal i As Long) As Long If i <> 0 Then Debug.Print "カウント:" & i Call_Count = Call_Count(i - 1) End If End Function
注意点
- 終了条件がないと無限ループが発生するので必ず記述してください。
※プロシージャが自身を呼び出すたびにメモリの容量を使うので、無限ループが発生するとエラーになります。 - 再帰呼び出しはパフォーマンス低下や無限ループ発生のリスクを考慮する必要があります。
ほとんどがループ処理で対応できるので、そちらも検討してください。 - Functionプロシージャーを再帰呼び出しするときには、引数のリストがない場合でもプロシージャ名の後に()を付けてください。
※関数のタイトルが関数の戻り値であると見なされてしまいます。
コメント