Maison  >  Article  >  interface Web  >  Résolution de problèmes avec des fonctions récursives en JavaScript

Résolution de problèmes avec des fonctions récursives en JavaScript

黄舟
黄舟original
2017-11-18 11:28:481401parcourir

Dans l'article précédent, nous vous avons présenté l'utilisation des fonctions récursives en JavaScript, puis lorsque nous utilisons les fonctions récursives en JavaScript , il y aura Il y aura quelques problèmes. Aujourd'hui, je vais vous donner un exemple pour présenter le problème des fonctions récursives en JavaScript !

Définissez d'abord une fonction récursive pour trouver la factorielle d'un entier positif N :

function factorial(num){
    if(num<=1)
        return 1;
    return num*factorial(num-1);
}

Définissez ensuite une autre variable pointant vers cette fonction, puis définissez la fonction sur null

var anotherFactorial=factorial;
factorial=null;
alert(anotherFactorial(4));//报错

Pourquoi une erreur est-elle signalée ? Parce qu'à l'intérieur de la fonction factorielle, la factorielle elle-même est appelée de manière récursive et le code ci-dessus définit la factorielle sur null, ce n'est donc plus une fonction. Cela peut paraître un peu étrange, mais c'est ainsi que JavaScript le gère en interne. Comment résoudre ce problème ? Une solution consiste à remplacer la fonction elle-même par arguments.callee à l'intérieur de la fonction

function factorial(num){    
if(num<=1)        
return 1;    
return num * arguments.callee(num-1);
}

De cette façon, quelle que soit la variable à laquelle la fonction est affectée, il n'y aura aucun problème lors des appels ultérieurs. Par conséquent, il est recommandé d’utiliser arguments.callee dans une fonction récursive au lieu de la fonction elle-même. Ou vous pouvez utiliser expression de fonction pour résoudre ce problème :

var factorial = (function f(num){    
if(num<=1)        
return 1;    
return num*f(num-1);
});

De cette façon, peu importe si la variable factorielle est affectée à une autre variable, il n'y aura aucun problème avec la appel récursif.

Résumé :

Grâce à l'introduction détaillée de cet article, je pense que les amis auront une nouvelle compréhension du problème des fonctions récursives dans JavaScript. J'espère que cela vous aidera dans votre travail !

Recommandations associées :

Explication détaillée de l'utilisation des fonctions récursives en JavaScript


Analyse et explication des fonctions récursives en JavaScript


Compréhension détaillée des fonctions récursives en JavaScript et partage d'exemples de code

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn