1. Was ist Rekursion?Wenn eine Funktion sich selbst intern aufrufen kann, dann ist diese Funktion rekursiv. Einfaches Verständnis: Eine Funktion ruft sich intern selbst auf und diese Funktion ist eine rekursive Funktion. Wie unten dargestellt: Funktion fn(){ fn(); } fn(); Diese Funktion ist eine rekursive Funktion. Wenn wir sie direkt drucken, wird sie: Ich habe einen Druckfehler gefunden. Warum? Weil rekursive Funktionen die gleiche Wirkung haben wie Schleifen. Wenn ihm kein Rückgabewert gegeben wird, wird es in einer Endlosschleife fortgesetzt. Wir wissen also: Da bei der Rekursion Wie schreibt man eine korrekte rekursive Funktion? Nehmen Sie den obigen Code als Beispiel: Wenn wir beispielsweise fünfmal „Hallo“ drucken möchten, sollten wir es folgendermaßen schreiben: varnum = 1; Funktion fn(){ console.log('Hallo'); wenn(Zahl == 5){ zurückkehren; } Zahl++; fn(); } fn(); Das Druckergebnis ist: Nachdem wir nun wissen, was Rekursion ist, schauen wir uns an, wie man Rekursion zur Lösung von Problemen einsetzen kann. 2. Mathematische Probleme mit Rekursion lösen1. Finden Sie die Fakultät von 1 * 2 * 3 * 4 …*nDer Code lautet wie folgt: Funktion fn(n){ wenn(n == 1){ Rückgabe 1; } gibt n*fn(n-1) zurück; } console.log('Die Fakultät von 1-20 ist: '+fn(20)); console.log('Die Fakultät von 1-10 ist: '+fn(10)); console.log('Die Fakultät von 1-5 ist: '+fn(5)); Das Druckergebnis ist: 2. Finden Sie die Fibonacci-Folge Die Fibonacci-Folge, auch als „Kaninchenfolge“ bekannt, bezeichnet eine Zahlenfolge Der Code lautet wie folgt: Funktion fb(n){ wenn(n === 1 || n === 2){ Rückgabe 1; } gibt fb(n-1) + fb(n-2) zurück; } console.log('Der Wert der dritten Fibonacci-Zahl ist: '+fb(3)); console.log('Der Wert der 10. Fibonacci-Zahl ist: '+fb(10)); Das Druckergebnis ist: 3. Verwenden Sie Rekursion, um das entsprechende Datenobjekt zu finden Gibt das entsprechende Datenobjekt entsprechend Es gibt Objekte wie dieses: var Datum = [{ Ich würde: 1, Name:'Elektrogeräte', Waren:[{ Ich würde: 11, gname:'Mobiltelefon' },{ Ich würde: 12, gname: 'Computer' }] },{ Ich würde: 2, Name: 'Kleidung', Waren:[{ Ich würde: 21, gname:'Hose' },{ Ich würde: 22, gname: 'Mantel' }] },{ ID: 3, Name: 'Essen' }]; Jetzt müssen wir das entsprechende Datenobjekt durch Eingabe Zunächst können wir for...Each() verwenden, um das Array zu durchlaufen und jeden Wert abzurufen, wie unten gezeigt: Funktion getId(Array,ID){ array.forEach(Funktion(Wert){ konsole.log(Wert); }) } getId(Datum,1); Das ausgedruckte Ergebnis lautet: Wenn wir jetzt den Wert des Objekts mit der ID 1 abrufen möchten, können wir Folgendes tun: Funktion getId(Array,ID){ array.forEach(Funktion(Wert){ wenn(Wert.id === id){ konsole.log(Wert); } }) } getId(Datum,1); Das Druckergebnis ist: Ja, aber was ist, wenn wir den Wert des Objekts mit der ID 11 abrufen möchten? Offensichtlich ist ein direkter Aufruf der Funktion nicht möglich, da wir über for...Each nur den Wert des äußersten Objekts abrufen, die spezifische Klassifizierung der inneren Ebene jedoch nicht erhalten. Zu diesem Zeitpunkt können wir den Wert des inneren Objekts abrufen, indem wir die Funktion getId(array,id) rekursiv aufrufen. Die Funktionsweise ist wie folgt: Funktion getId(Array,ID){ array.forEach(Funktion(Wert){ wenn(Wert.id === id){ konsole.log(Wert); }sonst wenn(Wert.Waren && Wert.Waren.Länge != 0){ getId(Wert.Waren,ID); } }) } // getId(Datum,1); getId(Datum,11); Das ausgedruckte Ergebnis lautet: Dies ist das Ende dieses Artikels über Das könnte Sie auch interessieren:
|
<<: Tutorial zur Installation, Bereitstellung und Verwaltung von KVM-Virtualisierung
>>: Eine einfache Möglichkeit, Desktop-Exe-Programme auf einer Webseite aufzurufen
Inhaltsverzeichnis 1. Projektbeschreibung 1.1 Hin...
1. Hintergrund der parallelen Replikation Zunächs...
Inhaltsverzeichnis Über die MariaDB-Datenbank unt...
In diesem Artikelbeispiel wird der spezifische Co...
Inhaltsverzeichnis 1. Einleitung: In diesem Fall ...
Möglicherweise müssen Sie in Linux manchmal symbo...
<br />Wenn wir über Navigation sprechen, geh...
Vorwort In den meisten Projekten werden Sie auf e...
1. Einleitung WHMCS bietet eine Komplettlösung fü...
Inhaltsverzeichnis 1. Installieren Sie axios 2. V...
In diesem Artikelbeispiel wird der spezifische Co...
1: Installieren Sie MongoDB im Docker Schritt 1: ...
Inhaltsverzeichnis Hintergrund erreichen 1. Gekap...
1. Netzwerkoptimierung YSlow hat 23 Regeln. Diese...
<br /> CSS-Syntax für Tabellenränder Zu den ...