Skip to main content

Was ist ein rekursiger Anruf?

Bei der Programmierung ist ein rekursiger Aufruf ein Befehl in einer Unterprogramme oder Funktion, die dem Programm mitteilt, dass dieselbe Unterprogramm erneut ausführen soll.Die Wiederholungsleistung kann das direkte Ergebnis der Funktion sein, oder es kann eine zweite Funktion ausgelöst werden, die sich wiederum auf die erste Funktion bezieht.Ein rekursiver Aufruf hat einige Ähnlichkeiten mit der gefürchteten unendlichen Schleife, aber die Unterroutine hat immer eine bedingte Aussage, die dem Programm zeigt, wann die Rekursion nicht mehr wiederholt werden soll.

Das Konzept der Rekursion wird möglicherweise am besten durch die Verwendung eines Beispiels dargestellt.Angenommen, ein Dachdecker wendet neue Schindeln auf ein Haus auf.Zunächst muss er ein Bündel Schindeln aufs Dach tragen.Sobald er das erste Bündel an Ort und Stelle genagelt hat, muss er die Leiter hinunterklettern, ein weiteres Bündel zurückholen und festnageln.Der Prozess setzt sich als eine Reihe von Go, Fetch, zurück, bis das letzte Schindel angewendet wurde.Zu diesem Zeitpunkt kann der Dachdecker frei zum nächsten Job übergehen oder nach Hause gehen.

Obwohl das Beispiel eine zu vereinfachte Durchführung ist, enthält es alle Elemente eines rekursiven Anrufs.Es gibt einen Ausgangspunkt, der Dachdecker muss abrufen, was er braucht, zum Anfang zurückkehren und, wenn der endgültige Zustand erfüllt ist, stoppen.Dies ist im Grunde das, was das Programm tut.Es beginnt, implementiert eine Aktion, kehrt zu sich selbst zurück und endet, wenn die Endbedingung auftritt.

Die Endbedingung wird als Basisfall bezeichnet.Es ist für alle rekursiven Anrufe unerlässlich;Ohne sie würde sich die Funktion weiterhin wiederholen.Dies führt bestenfalls dazu, die Systemspeicherressourcen zu entleeren.Normalerweise wird die Überlastung das Programm irgendwann zum Absturz bringen, aber wenn das Problem entdeckt wird, können erhebliche Schäden angerichtet werden.

Erkennt erlebte Programmierer möglicherweise die Ähnlichkeit zwischen einem rekursiven Aufruf und einer für oder während der Schleife.Wenn zum Beispiel das Ziel darin besteht, die Gesamtinventarzahl aller Aktien mit Teilenzahlen von mehr als 999 zu finden, teilt A for Loop das Programm anBedingung ist gültig.Es könnte gesagt werden, dass ein rekursiger Anruf einige der Merkmale dieser Schleifen mit einer IF-Then-ELSE-Erklärung kombiniert.Wenn diese Bedingung wahr ist, dann tun Sie dies oder tun Sie etwas anderes, wenn die Bedingung falsch ist.Rekursion ermöglicht jedoch typischerweise mehr kompakten Code und ermöglicht das Problem, an die Funktion übergeben zu werden, an dem es benötigt wird.