Codistwa

Learn La récursion

Reading time : 2 min

Last update : February 10th, 2022

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.

Half off everything 2manning

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

javascriptjavascript
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

      javascriptjavascript
      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

      Print booksmanning