Sök…


Introduktion

En funktion som kallar sig sägs vara rekursiv . Rekursiv logik kan ofta också implementeras som en slinga. Rekursion måste styras med en parameter, så att funktionen vet när man ska stoppa rekursering och fördjupning av samtalstacken. Oändlig rekursion orsakar så småningom ett run-time-fel '28': "Out of stack space".

Se Rekursion .

Anmärkningar

Rekursion möjliggör upprepade, självreferenserande samtal om en procedur.

fakulteter

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

Mapprekursion

Early Bound (med referens till 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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow