Heim > Web-Frontend > js-Tutorial > Hauptteil

Detaillierte Erläuterung der Verwendung rekursiver Funktionen in JavaScript

黄舟
Freigeben: 2017-11-18 10:50:44
Original
2285 Leute haben es durchsucht

In unserem vorherigen Artikel haben wir die rekursive Funktion in JavaScript analysiert. Ich glaube, Sie haben ein gewisses Verständnis dafür. Hier sind die rekursiven Funktionen in JavaScript. Wie verwendet man sie? Heute gebe ich Ihnen eine detaillierte Einführung in die Verwendung rekursiver Funktionen in JavaScript!

Die sogenannte rekursive Funktion besteht darin, diese Funktion innerhalb des Funktionskörpers aufzurufen. Seien Sie vorsichtig, wenn Sie rekursive Funktionen verwenden. Bei unsachgemäßer Handhabung gelangen Sie in eine Endlosschleife. Rekursive Funktionen werden nur in bestimmten Situationen verwendet, z. B. bei faktoriellen Problemen

Versuchen wir, eine Fakultät innerhalb von 10 zu erstellen:

[Strg+A Alles auswählen Hinweis: Wenn Sie externe Js-Anforderungen einführen müssen muss aktualisiert werden, bevor es ausgeführt werden kann]

Das ist alles für den Aufruf der rekursiven Funktion

Die Versicherungsmethode, wenn sich die rekursive js-Funktion selbst aufruft.
Aus der erweiterten js-Programmierung
Eine typische faktorielle rekursive Funktion:

Der Code lautet wie folgt:

function fact(num){ 
if (num<=1){ return 1; 
}else{ 
return num*fact(num-1); 
} 
}
Nach dem Login kopieren

Der folgende Code kann einen Fehler verursachen:

var anotherFact = fact; 
fact = null; 
alert(antherFact(4)); //出错
Nach dem Login kopieren

Da Fakt keine Funktion mehr ist, ist ein Fehler aufgetreten.
Das Problem kann mit arguments.callee gelöst werden, das ein Zeiger auf die ausgeführte Funktion ist.
Die neue Funktion ist:

Der Code lautet wie folgt:

function fact(num){ 
if (num<=1){ 
return 1; 
}else{ 
return num*arguments.callee(num-1); //此处更改了。 
} 
} 
var anotherFact = fact; 
fact = null; 
alert(antherFact(4)); //结果为24.
Nach dem Login kopieren

Verbesserung der gewöhnlichen JS-Rekursion

Die rekursive Funktion ist in einer Funktion übergeben Es wird gebildet, wenn der Name sich selbst aufruft, wie unten gezeigt:

Der Code lautet wie folgt:

function factorial(num) 
{ 
if(num<=1) 
{ 
return 1; 
} 
else 
{ 
return num * factorial(num-1); 
} 
}
Nach dem Login kopieren

Dies ist eine klassische Fakultätsfunktion. Oberflächlich betrachtet scheint es kein Problem zu geben, aber der folgende Code kann dazu führen, dass es schief geht.

var anotherFactorial = factorial; 
anotherFactorial(4); //输出 24 
factorial = null;
Nach dem Login kopieren

anotherFactory (4); //TypeError: Property 'factorial' of object [object Window] is not a function Getestet unter chrome
Der Grund ist dass, Der von uns definierte Funktionsname ist tatsächlich ein Zeiger auf die Funktion. Zu diesem Zeitpunkt ist anotherFactorial definiert und zeigt auf diese Funktion, sodass der Aufruf von anotherFactorial (4) erfolgreich ausgegeben werden kann 24
Zu diesem Zeitpunkt istfactorial = null; ausführen Die Referenz der definierten Funktion wird bei anotherFactorial belassen, dann wird beim Aufruf von anotherFactorial(4) die obige Fehlermeldung angezeigt.
Zu diesem Zeitpunkt kann arguments.callee verwendet werden, um die Funktion in der Funktionsdefinition zu ersetzen:

Der Code lautet wie folgt:

function factorial(num) 
{ 
if(num<=1) 
{ 
return 1; 
} 
else 
{ 
return num * arguments.callee(num-1); 
} 
}
Nach dem Login kopieren
Unter Verwendung der oben genannten 4 Zeilen Testcode kann die letzte Zeile Testcode auch erfolgreich 24 ausgeben.

Zusammenfassung:

Durch die ausführliche Einführung im obigen Artikel glaube ich, dass Freunde ein besseres Verständnis für die Verwendung rekursiver Funktionen in JavaScript haben. Ich hoffe, dass dies für Ihre Arbeit hilfreich sein wird!

Verwandte Empfehlungen:

Analyse und Erklärung rekursiver Funktionen in JavaScript


Rekursive Funktion in JS


Verfeinertes Verständnis rekursiver Funktionen in JavaScript und gemeinsame Nutzung von Beispielcode

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung rekursiver Funktionen in JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
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