Récursivité C


La récursion fait référence à la méthode d'utilisation de la fonction elle-même dans la définition de la fonction.

Par exemple :
Il était une fois une montagne, et il y avait un temple dans la montagne. Il y avait un vieux moine dans le temple, et il racontait des histoires aux jeunes. moine! Quelle est l'histoire ? "Il était une fois une montagne, et il y avait un temple dans la montagne. Il y avait un vieux moine dans le temple, et il racontait une histoire au jeune moine ! Quelle est l'histoire ? " Il était une fois , il y avait une montagne, et il y avait un temple dans la montagne. Il y avait un vieux moine dans le temple, et il racontait une histoire au jeune moine. Quelle est l'histoire ? .'"

Le format de syntaxe est le suivant :

void recursion(){
   recursion(); /* 函数调用自身 */}int main(){
   recursion();}

Le langage C prend en charge la récursivité, c'est-à-dire qu'une fonction peut s'appeler elle-même. Mais lorsqu'ils utilisent la récursivité, les programmeurs doivent faire attention à définir une condition pour quitter la fonction, sinon elle entrera dans une boucle infinie.

Les fonctions récursives jouent un rôle essentiel dans la résolution de nombreux problèmes mathématiques, tels que le calcul de la factorielle d'un nombre, la génération de la séquence de Fibonacci, etc.

Factoriale d'un nombre

L'exemple suivant utilise une fonction récursive pour calculer la factorielle d'un nombre donné :

#include <stdio.h>double factorial(unsigned int i){   if(i <= 1)   {      return 1;   }   return i * factorial(i - 1);}int  main(){    int i = 15;
    printf("%d 的阶乘为 %f\n", i, factorial(i));    return 0;}

Lorsque le code ci-dessus est compilé et exécuté , Il produit les résultats suivants :

15 的阶乘为 1307674368000.000000

Séquence de Fibonacci

L'exemple suivant utilise une fonction récursive pour générer la séquence de Fibonacci pour un nombre donné :

#include <stdio.h>int fibonaci(int i){   if(i == 0)   {      return 0;   }   if(i == 1)   {      return 1;   }   return fibonaci(i-1) + fibonaci(i-2);}int  main(){    int i;    for (i = 0; i < 10; i++)    {
       printf("%d\t%n", fibonaci(i));    }    return 0;}

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants :

0112358132134