![]() ![]() » Méthodes non récursives , Autres exemples de récursion , Fonctions récursives (généralités) |
Une fonction ou une procédure (sous-programme informatique) est dite récursive si elle fait appel à elle-même dans l'algorithme qui la définit. Actuellement, la majorité des langages de programmation accepte cette forme de programmation (récursion) extrêmement puissante et élégante, aboutissant à des programmes très concis et très proches de la formulation mathématique de l'algorithme étudié.
! Cependant, il ne s'agit pas d'en abuser car
cette technique est généralement gourmande en
kilo-octets de mémoire : chaque appel récursif
oblige l'ordinateur à différer
ses calculs en cours en empilant des variables auxiliaires (dites
locales). La pile peut être rapidement saturée
suivant la profondeur de la récursion.
➔
Il
est d'ailleurs prouvé que tout algorithme récursif peut
être remplacé par un algorithme itératif
(de type récurrent : usage de boucles conditionnelles ou non).
Afin d'illustrer ce concept, et afin de contourner l'inévitable factorielle n , prenons le non moins incontournable exemple du calcul du PGCD selon l'algorithme d'Euclide.
Programmation de la méthode en JavaScript |
La fonction go() est la fonction d'appel du programme. Par défaut, a = 504 et b = 396. Le pgcd est alors 36. On appréciera la simplicité récursive de la fonction pgcd ! L'instruction a%b retourne le reste de la division de a par b.
<SCRIPT
LANGUAGE=JavaScript> |
Analyse d'exécution du programme : |
Quelques autres algorithmes récursifs dans ChronoMath : |
➔ Pour en savoir plus :