Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Eine rekursive Prozedur ist eine Prozedur, die sich selbst aufruft. Im Allgemeinen ist dies nicht die effektivste Methode zum Schreiben von Visual Basic-Code.
Im folgenden Verfahren wird rekursion verwendet, um die Factorial des ursprünglichen Arguments zu berechnen.
Function Factorial(n As Integer) As Integer
If n <= 1 Then
Return 1
End If
Return Factorial(n - 1) * n
End Function
Überlegungen zu rekursiven Prozeduren
Einschränken der Bedingungen. Sie müssen eine rekursive Prozedur entwerfen, um mindestens eine Bedingung zu testen, die die Rekursion beenden kann, und Sie müssen auch den Fall behandeln, in dem keine solche Bedingung innerhalb einer angemessenen Anzahl rekursiver Aufrufe erfüllt ist. Ohne mindestens eine Bedingung, die sicher erfüllt werden kann, besteht ein hohes Risiko, dass Ihre Prozedur in einer Endlosschleife endet.
Speicherauslastung. Ihre Anwendung verfügt über einen begrenzten Speicherplatz für lokale Variablen. Jedes Mal, wenn eine Prozedur sich selbst aufruft, verwendet sie mehr Platz für zusätzliche Kopien seiner lokalen Variablen. Wenn dieser Vorgang unbegrenzt fortgesetzt wird, verursacht er schließlich einen StackOverflowException Fehler.
Effizienz. Sie können fast immer eine Schleife anstelle von Rekursionen verwenden. Eine Schleife hat keinen Aufwand für das Übergeben von Argumenten, das Initialisieren von zusätzlichem Speicher und das Zurückgeben von Werten. Ihre Leistung kann ohne rekursive Aufrufe wesentlich besser sein.
Gegenseitige Rekursion: Sie könnten eine sehr schlechte Performance oder sogar eine unendliche Schleife beobachten, wenn zwei Funktionen einander aufrufen. Ein solcher Entwurf stellt dieselben Probleme wie eine einzelne rekursive Prozedur dar, kann jedoch schwieriger zu erkennen und zu debuggen sein.
Aufrufen mit Klammern. Wenn sich eine Function
Prozedur rekursiv aufruft, müssen Sie den Prozedurnamen mit Klammern befolgen, auch wenn keine Argumentliste vorhanden ist. Andernfalls wird der Funktionsname als Rückgabewert der Funktion verwendet.
Testen. Wenn Sie eine rekursive Prozedur schreiben, sollten Sie sie sehr sorgfältig testen, um sicherzustellen, dass sie immer eine einschränkungsbeschränkende Bedingung erfüllt. Sie sollten auch sicherstellen, dass Ihnen aufgrund zu vieler rekursiver Aufrufe nicht der Speicher ausgeht.