Articles

Fonction récursive JavaScript

Résumé: dans ce tutoriel, vous apprendrez à utiliser la technique de récursivité pour développer une fonction récursive JavaScript, qui est une fonction qui s’appelle elle-même.

Introduction aux fonctions récursives JavaScript

Une fonction récursive est une fonction qui s’appelle jusqu’à ce qu’elle ne le fasse pas. Et cette technique s’appelle récursivité.

Supposons que vous ayez une fonction appelée recurse(). La recurse() est une fonction récursive si elle s’appelle à l’intérieur de son corps, comme ceci:

function recurse() { // ... recurse(); // ...}
Code language: JavaScript (javascript)

Une fonction récursive a toujours la condition d’arrêter de s’appeler, sinon elle s’appellera indéfiniment. Ainsi, une fonction récursive ressemble généralement à ce qui suit:

function recurse() { if(condition) { // stop calling itself //... } else { recurse(); }}
Code language: JavaScript (javascript)

Généralement, les fonctions récursives sont utilisées pour décomposer un gros problème en plus petits. Vous pouvez constater qu’ils sont fortement utilisés dans les structures de données comme les arbres binaires et les graphiques et les algorithmes tels que la recherche binaire et le quicksort.

Exemples de fonctions récursives JavaScript

Prenons quelques exemples d’utilisation des fonctions récursives.

1)Un exemple de fonction récursive JavaScript simple

Supposons que vous deviez développer une fonction qui compte à rebours d’un nombre spécifié à 1. Par exemple, pour décompter de 10 à 1 :

321

Ce qui suit affiche la fonction countDown() :

function countDown(fromNumber) { console.log(fromNumber);}countDown(3);
Code language: JavaScript (javascript)

Cette countDown(3) affiche uniquement la fonction numéro 3.

Pour décompter le nombre 3 à 1, vous pouvez :

  1. afficher le nombre 3.
  2. et appelez le countDown(2) qui affiche le nombre 2.
  3. et appelez le countDown(1) qui affiche le nombre 1.

Ce qui suit change la countDown() en une fonction récursive :

Cette countDown(3) s’exécutera jusqu’à ce que la taille de la pile d’appels soit dépassée, comme ceci :

Uncaught RangeError: Maximum call stack size exceeded.
Code language: JavaScript (javascript)

because car elle n’a pas la condition de arrête de t’appeler.

Le compte à rebours s’arrêtera lorsque le nombre suivant sera nul, par conséquent, nous ajoutons une condition if comme suit:

Sortie:

321

Le countDown() semble fonctionner comme prévu.

Cependant, comme mentionné dans le didacticiel sur le type de fonction, le nom de la fonction fait référence à l’objet fonction réel.

Si quelque part dans le code, le nom de la fonction est défini sur null, la fonction récursive cessera de fonctionner.

Par exemple, le code suivant entraînera une erreur :

let newYearCountDown = countDown;// somewhere in the codecountDown = null;// the following function call will cause an errornewYearCountDown(10);
Code language: JavaScript (javascript)

Erreur :

Uncaught TypeError: countDown is not a function
Code language: JavaScript (javascript)

Comment fonctionne le script:

  • Tout d’abord, attribuez le nom de la fonction countDown à la variable newYearCountDown.
  • Deuxièmement, définissez la référence de fonction countDown sur null.
  • Troisièmement, appelez la fonction newYearCountDown.

Le code provoque une erreur car le corps de la fonction countDown() fait référence au nom de la fonction countDown qui a été défini sur null au moment de l’appel de la fonction.

Pour le corriger, vous pouvez utiliser une expression de fonction nommée comme suit:

2) Calculer la somme des chiffres d’un nombre exemple

Étant donné un nombre, par exemple, 324, calculer la somme des chiffres 3 + 2 + 4 = 9.

Pour appliquer la technique récursive, vous pouvez utiliser les étapes suivantes :

f(324) = 4 + f(32)f(32) = 2 + f(3)f(3) = 3 + 0 (stop here)

So

f(324) = 4 + f(32) f(324) = 4 + 2 + f(3) f(324) = 4 + 2 + 3

Ce qui suit illustre la fonction récursive sumOfDigits() :

Comment cela fonctionne :

>

Résumé

  • Une fonction récursive est une fonction qui s’appelle jusqu’à ce qu’elle ne le fasse pas
  • Une fonction récursive a toujours une condition qui empêche la fonction de s’appeler elle-même.
  • Ce tutoriel a-t-il été utile?
  • Ouinon