C - Récursivité

La récursivité est le processus de répétition d'éléments d'une manière auto-similaire. Dans les langages de programmation, si un programme vous permet d'appeler une fonction à l'intérieur de la même fonction, alors il est appelé un appel récursif de la fonction.

void recursion() {
   recursion(); /* function calls itself */
}

int main() {
   recursion();
}

Le langage de programmation C prend en charge la récursivité, c'est-à-dire une fonction à appeler. Mais tout en utilisant la récursivité, les programmeurs doivent faire attention à définir une condition de sortie de la fonction, sinon elle ira dans une boucle infinie.

Les fonctions récursives sont très utiles pour résoudre de nombreux problèmes mathématiques, comme le calcul de la factorielle d'un nombre, la génération de séries de Fibonacci, etc.

Factorielle numérique

L'exemple suivant calcule la factorielle d'un nombre donné à l'aide d'une fonction récursive -

#include <stdio.h>

unsigned long long int factorial(unsigned int i) {

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

int  main() {
   int i = 12;
   printf("Factorial of %d is %d\n", i, factorial(i));
   return 0;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

Factorial of 12 is 479001600

Série Fibonacci

L'exemple suivant génère la série de Fibonacci pour un nombre donné à l'aide d'une fonction récursive -

#include <stdio.h>

int fibonacci(int i) {

   if(i == 0) {
      return 0;
   }
	
   if(i == 1) {
      return 1;
   }
   return fibonacci(i-1) + fibonacci(i-2);
}

int  main() {

   int i;
	
   for (i = 0; i < 10; i++) {
      printf("%d\t\n", fibonacci(i));
   }
	
   return 0;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

0	
1	
1	
2	
3	
5	
8	
13	
21	
34