JavaScript Fonction récursive


Exemple

Une fonction récursive est simplement une fonction, qui s'appellerait elle-même.

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

La fonction ci-dessus montre un exemple de base sur la façon d'effectuer une fonction récursive pour renvoyer une factorielle.


Un autre exemple serait de récupérer la somme des nombres pairs dans un tableau.

function countEvenNumbers (arr) {
    // Sentinel value.  Recursion stops on empty array.
    if (arr.length < 1) {
        return 0;
    }
    // The shift() method removes the first element from an array 
    // and returns that element. This method changes the length of the array.
    var value = arr.shift();

    // `value % 2 === 0` tests if the number is even or odd
    // If it's even we add one to the result of counting the remainder of 
    // the array.  If it's odd, we add zero to it.
    return ((value % 2 === 0) ? 1 : 0) + countEvens(arr);
}

Il est important que ces fonctions effectuent une sorte de vérification de la valeur sentinelle pour éviter les boucles infinies. Dans le premier exemple ci-dessus, lorsque n est inférieur ou égal à 1, la récursivité s'arrête, permettant au résultat de chaque appel de renvoyer la pile d'appels.