Heim > Web-Frontend > Front-End-Fragen und Antworten > Was ist die Implementierungsmethode des rekursiven Algorithmus in JavaScript?

Was ist die Implementierungsmethode des rekursiven Algorithmus in JavaScript?

PHPz
Freigeben: 2023-04-21 16:22:59
Original
647 Leute haben es durchsucht

Rekursiver Algorithmus ist eine gängige Algorithmusidee. Durch den Aufruf rekursiver Funktionen können Probleme zerlegt und gelöst werden. In JavaScript ist die Implementierung rekursiver Funktionen sehr einfach. Sie müssen lediglich auf die Reihenfolge der Funktionsaufrufe und Beendigungsbedingungen achten.

Als nächstes stellen wir anhand von Beispielen die Implementierungsmethode des rekursiven Algorithmus in JavaScript vor.

Beispiel 1: Ermitteln Sie den Wert des n-ten Termes der Fibonacci-Folge

Die Fibonacci-Folge bezieht sich auf: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ..., das heißt, das erste Element ist 0, das zweite Element ist 1 und jedes nachfolgende Element ist die Summe der beiden vorherigen Elemente. Im Folgenden wird ein rekursiver Algorithmus verwendet, um den Wert des n-ten Elements der Fibonacci-Folge zu ermitteln:

function fibonacci(n) {
  if(n <= 1) {
    return n;
  } else {
    return fibonacci(n-1) + fibonacci(n-2);
  }
}
Nach dem Login kopieren

Bestimmen Sie im obigen Code zunächst, ob n 1 oder 0 ist, und wenn ja, geben Sie n selbst als zurück Rekursionsexportbedingungen. Wenn n nicht 1 oder 0 ist, zerlegen Sie das Problem in die Lösung der Summe der ersten beiden Elemente und rufen Sie die eigene Funktion rekursiv auf, bis die Beendigungsbedingung erreicht ist.

Beispiel 2: Tower-of-Hanoi-Problem

Das Tower-of-Hanoi-Problem ist ein klassisches rekursives Problem: Das Problem wird wie folgt beschrieben: Es gibt drei Säulen, von denen eine ist Es werden mehrere Scheiben unterschiedlicher Größe platziert. Die unterste Scheibe ist die größte, die anderen Scheiben werden in abnehmender Reihenfolge angezeigt. Jetzt müssen Sie diese Scheiben auf eine andere Säule bewegen. Während der Bewegung müssen Sie die kleinere Scheibe auf eine Säule auf der größeren Scheibe legen, und es kann immer nur eine Scheibe bewegt werden. Ich würde gerne fragen, wie viele Bewegungen erforderlich sind, um alle Scheiben auf eine andere Säule zu bewegen, wenn die Verschiebungsbedingungen erfüllt sind.

Das Folgende ist die Implementierung des rekursiven Algorithmus für das Tower-of-Hanoi-Problem:

function hannuo(n, A, B, C) {
  if(n === 1) {
    console.log(`将第${n}个圆盘从${A}移动到${C}`);
  } else {
    hannuo(n-1, A, C, B);
    console.log(`将第${n}个圆盘从${A}移动到${C}`);
    hannuo(n-1, B, A, C);
  }
}
Nach dem Login kopieren

Unter diesen stellt n die Anzahl der Festplatten dar, A, B und C repräsentieren Drei Säulen und die rekursive Funktion hannuo Die Funktion besteht darin, n Scheiben vom unteren Ende von A zum unteren Ende von C zu bewegen und den unteren Rand von B in der Mitte zu verwenden Lösen Sie die Unterprobleme mit reduziertem Maßstab, bis die Rekursion das kleinste Problem erreicht: Verschieben Sie die erste Festplatte. Bewegen Sie sich von A nach C. Das Endergebnis besteht darin, hannuo(n, 'A', 'B', 'C') aufzurufen, um die Bewegungsschritte zu lösen und auszugeben.

Rekursive Algorithmen können uns bei der Lösung einiger komplexer Probleme helfen, aber wir müssen auch vorsichtig sein, um eine unendliche Rekursion zu vermeiden, also müssen wir beim Schreiben von Code vorsichtig sein.

Das obige ist der detaillierte Inhalt vonWas ist die Implementierungsmethode des rekursiven Algorithmus in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage