Maison > interface Web > js tutoriel > le corps du texte

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

黄舟
Libérer: 2017-11-18 11:28:48
original
1417 Les gens l'ont consulté

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);
}
Copier après la connexion

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));//报错
Copier après la connexion

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);
}
Copier après la connexion

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);
});
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!