수색…
소개
자체를 호출하는 함수는 재귀 적이 라고합니다. 재귀 논리는 종종 루프로 구현 될 수도 있습니다. 재귀 호출은 매개 변수를 사용하여 제어되어야하므로 함수가 호출 스택의 반복 및 심화를 중지 할시기를 알 수 있습니다. 무한 재귀는 결국 런타임 오류 '28'을 발생시킵니다.
재귀를 참조하십시오.
비고
재귀는 프로 시저에 대한 반복적 인 자체 참조 호출을 허용합니다.
요인
Function Factorial(Value As Long) As Long
If Value = 0 Or Value = 1 Then
Factorial = 1
Else
Factorial = Factorial(Value - 1) * Value
End If
End Function
폴더 재귀
Early Bound ( Microsoft Scripting Runtime
참조)
Sub EnumerateFilesAndFolders( _
FolderPath As String, _
Optional MaxDepth As Long = -1, _
Optional CurrentDepth As Long = 0, _
Optional Indentation As Long = 2)
Dim FSO As Scripting.FileSystemObject
Set FSO = New Scripting.FileSystemObject
'Check the folder exists
If FSO.FolderExists(FolderPath) Then
Dim fldr As Scripting.Folder
Set fldr = FSO.GetFolder(FolderPath)
'Output the starting directory path
If CurrentDepth = 0 Then
Debug.Print fldr.Path
End If
'Enumerate the subfolders
Dim subFldr As Scripting.Folder
For Each subFldr In fldr.SubFolders
Debug.Print Space$((CurrentDepth + 1) * Indentation) & subFldr.Name
If CurrentDepth < MaxDepth Or MaxDepth = -1 Then
'Recursively call EnumerateFilesAndFolders
EnumerateFilesAndFolders subFldr.Path, MaxDepth, CurrentDepth + 1, Indentation
End If
Next subFldr
'Enumerate the files
Dim fil As Scripting.File
For Each fil In fldr.Files
Debug.Print Space$((CurrentDepth + 1) * Indentation) & fil.Name
Next fil
End If
End Sub
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow