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
Vorwort Erfahren Sie, wie Sie auf Ihrem System ei...
CJK ist die Abkürzung für CJK Unified Ideographs,...
Hintergrund In letzter Zeit werde ich in Intervie...
Inhaltsverzeichnis 1 Einleitung 2 Voraussetzungen...
Wenn das Home-Verzeichnis des Benutzers immer grö...
In diesem Artikel wird der spezifische Code von j...
Inhaltsverzeichnis brauchen: Aufgetretene Problem...
Inhaltsverzeichnis Objekt Objektdefinition Iterie...
0. Vorbereitung: • Schließen Sie iTunes • Beenden...
Die erste Zeile eines Docker-Images beginnt mit e...
Heute habe ich Docker verwendet, um das Image abz...
Eine At-Regel ist eine Deklaration, die Anweisung...
Als ich das erste Mal anfing, fand ich viele Fehl...
Ich habe vor Kurzem die 34 goldenen Regeln von Yah...
In der heutigen Entwicklungsumgebung ist schnell ...