La récursion signifie qu'une fonction s'appelle elle-même. La procédure se fait grâce à l'exécution du programme interne avec une variable qui diminue jusqu'à ce qu'une limite soit atteinte. Le but est d'effectuer des boucles avec une syntaxe élégante. L'inconvénient est que l'exécution de ce type de fonction est très lente. En effet, la complexité est exponentielle. Il faudra donc faire attention à placer une condition dans le début du corps de la fonction afin d'éviter une exécution infinie qui risque de faire crasher le programme.
Factorielle avec un paramètre
Pour rappel la factorielle correspond à ce calcul : 3! = 1 × 2 × 3 = 6. C'est le produit des nombres entiers strictement positifs inférieurs ou égaux à n caractérisé par un point d'exclamation.
le calcul de la factorielle se fait ainsi : n ! = n * (n-1) * (n-2) * (n-3) * .... 1`̀`̀` avec
1! = 1̀
̀La version récursive de la factorielle est le suivant :
̀̀
n! = n * (n-1)!̀
̀`
Ainsi, calculer la factorielle n revient à calculer le produit de n par la factorielle (n-1). C'est ce qu'on va implémenter ici.
Lorsque n arrive au 1 le code s'arrête car on a plus besoin de calculer la suite, car tout élément multiplié par 1 est égal à lui même.
Code
1const factorial = (num) => {
2 if (num === 1) {
3 return 1;
4 }
5
6 return num * factorial(num - 1);
7}
8
9console.log(factorial(5));
Time complexity : exponential
Data
Before
5
Result
120
Puissance avec deux paramètres
ici grâce à deux paramètres nous serons capables de calculer la puissance d'un chiffre.
Ainsi, 2 puissance 3 = 8 car 2 x 2 x 2 = 8. Comme nous le voyez on calcule encore une série.
Comme d'habitude on met une condition afin d'éviter une exécution infinie, donc si l'exposant est égal à zéro car 2 puissance 0 = 1.
Code
1const power = (base, exponent) => {
2 if (exponent === 0) {
3 return 1
4 }
5
6 return base * power(base, exponent - 1)
7}
8
9console.log(power(2, 3));
Time complexity : exponential
Formula
Feedback
Did you find this content useful?
Your feedback helps us improve our content.