Heim > Artikel > Web-Frontend > Problemlösung mit rekursiven Funktionen in JavaScript
Im vorherigen Artikel haben wir Ihnen die Verwendung von rekursiven Funktionen in JavaScript vorgestellt. Wenn wir dann rekursive Funktionen in JavaScript verwenden, wird dies der Fall sein Es gibt einige Probleme. Heute werde ich Ihnen ein Beispiel geben, um das Problem rekursiver Funktionen in JavaScript vorzustellen!
Definieren Sie zunächst eine rekursive Funktion, um die Fakultät einer positiven ganzen Zahl N zu finden:
function factorial(num){ if(num<=1) return 1; return num*factorial(num-1); }
Definieren Sie dann eine weitere Variable, die auf diese Funktion zeigt, und setzen Sie die Funktion dann auf null
var anotherFactorial=factorial; factorial=null; alert(anotherFactorial(4));//报错
Warum wird ein Fehler gemeldet? Denn innerhalb der Funktion „Fakultät“ wird „Fakultät“ selbst rekursiv aufgerufen und der obige Code setzt „Fakultät“ auf Null, sodass es sich nicht mehr um eine Funktion handelt. Das hört sich vielleicht etwas seltsam an, aber so geht JavaScript intern damit um. Wie kann dieses Problem gelöst werden? Eine Möglichkeit besteht darin, die Funktion selbst durch arguments.callee innerhalb der Funktion zu ersetzen.
function factorial(num){ if(num<=1) return 1; return num * arguments.callee(num-1); }
Auf diese Weise treten bei nachfolgenden Aufrufen keine Probleme auf, unabhängig davon, welcher Variablen die Funktion zugewiesen ist. Daher wird empfohlen, arguments.callee innerhalb einer rekursiven Funktion anstelle der Funktion selbst zu verwenden. Oder Sie können den Funktionsausdruck verwenden, um dieses Problem zu lösen:
var factorial = (function f(num){ if(num<=1) return 1; return num*f(num-1); });
Auf diese Weise gibt es kein Problem damit, unabhängig davon, ob die faktorielle Variable einer anderen Variablen zugewiesen ist rekursiver Aufruf.
Zusammenfassung:
Ich glaube, dass Freunde durch die ausführliche Einleitung dieses Artikels ein neues Verständnis für das Problem rekursiver Funktionen erhalten werden JavaScript. Ich hoffe, es hilft Ihnen bei Ihrer Arbeit!
Verwandte Empfehlungen:
Das obige ist der detaillierte Inhalt vonProblemlösung mit rekursiven Funktionen in JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!