再帰呼び出し
プロシージャ内で自身のプロシージャを呼び出すことを「再帰呼び出し」と言います。
再帰プロシージャ、再帰処理、再帰関数など呼び方は様々です。
再帰呼び出しを使用したサンプルコード
'■元のプロシージャ
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プロシージャーを再帰呼び出しするときには、引数のリストがない場合でもプロシージャ名の後に()を付けてください。
※関数のタイトルが関数の戻り値であると見なされてしまいます。



コメント