Heim  >  Artikel  >  Web-Frontend  >  Problemlösung mit rekursiven Funktionen in JavaScript

Problemlösung mit rekursiven Funktionen in JavaScript

黄舟
黄舟Original
2017-11-18 11:28:481401Durchsuche

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:

Detaillierte Erläuterung der Verwendung rekursiver Funktionen in JavaScript


Analyse und Erklärung rekursiver Funktionen in JavaScript


Detailliertes Verständnis rekursiver Funktionen in JavaScript und Beispielcode-Sharing

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!

Stellungnahme:
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