2016-10-16 2 views
0

Il y a un concept que je n'arrive toujours pas à comprendre en Javascript. Comme celui-ci par exemple. Je suis tombé sur ce code en cherchant une fonction pour retourner le plus grand commun diviseur de deux entiers. Je l'ai testé mais je ne comprends pas comment cela renvoie le gcd. S'il vous plaît pouvez expliquer à quiconque comprend comprendre ce que fait return gcd(b, a % b); ici?Appeler le nom de la fonction à l'intérieur de la fonction

var gcd = function(a, b) { 
    if (! b) { 
     return a; 
    } 
    return gcd(b, a % b); 
}; 
+0

https://en.wikipedia.org/wiki/Euclidean_algorithm – Jon

Répondre

0

Vous utilisez un recusion, qui est un modèle d'appeler à nouveau la même fonction avec différents paramters jusqu'à ce qu'une condition de sortie se trouve et la récursion s'arrête. Dans ce cas, la fonction

// exit condition 
if (!b) { 
    return a; 
} 

est appelé à nouveau avec le paramètre déplacé b comme a et un nouveau paramètre de b avec a modulo b.

// call function again with different parameters 
return gcd(b, a % b); 
+1

Que signifie * « Utiliser une fonction nommée, et non une fonction anonyme » * ont à voir avec la question posée? –

+1

Merci! Très clair –