Articles

JavaScript Rekursive Funktion

Zusammenfassung: In diesem Tutorial erfahren Sie, wie Sie mit der Rekursionstechnik eine JavaScript rekursive Funktion entwickeln, die sich selbst aufruft.

Einführung in die rekursiven JavaScript-Funktionen

Eine rekursive Funktion ist eine Funktion, die sich selbst aufruft, bis sie es nicht tut. Und diese Technik wird Rekursion genannt.

Angenommen, Sie haben eine Funktion namens recurse() . Die recurse() ist eine rekursive Funktion, wenn sie sich innerhalb ihres Körpers wie folgt aufruft:

function recurse() { // ... recurse(); // ...}
Code language: JavaScript (javascript)

Eine rekursive Funktion hat immer eine Bedingung, um den Aufruf zu beenden, andernfalls wird sie sich unbegrenzt aufrufen. Eine rekursive Funktion sieht also normalerweise wie folgt aus:

function recurse() { if(condition) { // stop calling itself //... } else { recurse(); }}
Code language: JavaScript (javascript)

Im Allgemeinen werden rekursive Funktionen verwendet, um ein großes Problem in kleinere zu zerlegen. Sie können feststellen, dass sie in den Datenstrukturen wie binären Bäumen und Graphen und Algorithmen wie binäre Suche und Quicksort stark verwendet werden.

Beispiele für rekursive JavaScript-Funktionen

Nehmen wir einige Beispiele für die Verwendung der rekursiven Funktionen.

1) Ein einfaches rekursives JavaScript-Funktionsbeispiel

Angenommen, Sie müssen eine Funktion entwickeln, die von einer bestimmten Zahl auf 1 herunterzählt. Zum Beispiel, um von 10 auf 1 herunterzuzählen:

321

Das Folgende zeigt die countDown() Funktion:

function countDown(fromNumber) { console.log(fromNumber);}countDown(3);
Code language: JavaScript (javascript)

Diese countDown(3) zeigt nur die Zahl 3.

Um von der Zahl 3 auf 1 herunterzuzählen, können Sie:

  1. die Zahl 3 anzeigen.
  2. und rufen Sie die countDown(2) auf, die die Nummer 2 anzeigt.
  3. und rufen Sie die countDown(1) auf, die die Nummer 1 anzeigt.

Das Folgende ändert die countDown() in eine rekursive Funktion:

Diese countDown(3) wird so lange ausgeführt, bis die Größe des Aufrufstapels überschritten wird:

Uncaught RangeError: Maximum call stack size exceeded.
Code language: JavaScript (javascript)

… weil es nicht die Bedingung hat, sich nicht mehr selbst aufzurufen.

Der Countdown stoppt, wenn die nächste Zahl Null ist, daher fügen wir eine if-Bedingung wie folgt hinzu:

Ausgabe:

321

Das countDown() scheint wie erwartet zu funktionieren.

Wie im Tutorial zum Funktionstyp erwähnt, ist der Name der Funktion jedoch ein Verweis auf das eigentliche Funktionsobjekt.

Wenn irgendwo im Code der Funktionsname auf null gesetzt ist, funktioniert die rekursive Funktion nicht mehr.

Der folgende Code führt beispielsweise zu einem Fehler:

let newYearCountDown = countDown;// somewhere in the codecountDown = null;// the following function call will cause an errornewYearCountDown(10);
Code language: JavaScript (javascript)

Fehler:

Uncaught TypeError: countDown is not a function
Code language: JavaScript (javascript)

Funktionsweise des Skripts:

  • Weisen Sie der Variablen newYearCountDownzunächst den countDown Funktionsnamen zu.
  • Zweitens setzen Sie die countDown Funktionsreferenz auf null.
  • Rufen Sie drittens die Funktion newYearCountDown auf.

Der Code verursacht einen Fehler, da der Hauptteil der countDown() Funktion auf den countDown Funktionsnamen verweist, der zum Zeitpunkt des Aufrufs der Funktion auf null gesetzt wurde.

Um das Problem zu beheben, können Sie einen benannten Funktionsausdruck wie folgt verwenden:

2) Berechnen Sie die Summe der Ziffern einer Zahl Beispiel

Berechnen Sie bei einer Zahl, z. B. 324, die Summe der Ziffern 3 + 2 + 4 = 9.

Um die rekursive Technik anzuwenden, können Sie die folgenden Schritte ausführen:

f(324) = 4 + f(32)f(32) = 2 + f(3)f(3) = 3 + 0 (stop here)

Also

f(324) = 4 + f(32) f(324) = 4 + 2 + f(3) f(324) = 4 + 2 + 3

Das Folgende veranschaulicht die sumOfDigits() rekursive Funktion:

Wie es funktioniert:

Zusammenfassung

  • Eine rekursive Funktion ist eine Funktion, die sich selbst aufruft, bis sie es nicht tut
  • Eine rekursive Funktion hat immer eine Bedingung, die verhindert, dass sich die Funktion selbst aufruft.
  • War dieses Tutorial hilfreich ?
  • JaNein