Utiliser une fonction de façon récursive

Problème

Vous programmez une fonction qui a besoin de faire appel à elle-même.

Solution

Dans une fonction, il n’y a aucune différence syntaxique entre un appel à elle-même ou à une autre. La particularité d’une fonction récursive, autrement dit qui s’appelle elle-même, est qu’elle doit contenir une condition dite d’arrêt, qui arrête la récursion.

Discussion

Une fonction qui s’appelle elle-même, sans la précaution d’inclure une condition d’arrêt, est une boucle implicite et infinie. La fonction s’appelle alors elle-même en boucle jusqu’à épuisement des ressources. C’est ce qu’il faut éviter.

Une fonction récursive doit, à l’endroit où elle s’appelle, être codée d’une façon semblable à celle-ci :


void 
fonction_recursive (int param, /* ... */) 
{ 
  /* ... */ 
  if (!condition_arret) 
    { 
      fonction_recursive (/* ... */); 
    } 
  /* ... */ 
}
 

Le calcul du PGCD (plus grand commun diviseur) de deux nombres par la méthode d’Euclide se programme très bien avec la récursivité. Cette méthode consiste, pour deux entiers a et b, à dire que si b est nul, le PGCD des deux nombres est a. Sinon, le PGCD de a et b est égal au PGCD de b et du reste de la division entière...

Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Passer des paramètres à une fonction
Suivant
Écrire un fichier d'en-têtes