Université de Corse - IUP NTIC2 2005/2006 – Algorithme et Structure de Données
Base, partie strictement récursive
Une définition récursive est composée de deux parties:
Une partie non récursive: une instruction (ou bloc
d'instructions) nommée « point d'arrêt » qui indique que le
reste des instructions ne doit pas être exécuté.
Une partie strictement récursive
fonction maFonction ( ….. ) : TypeDeRetour
variables locales : …..
si ( fin ) alors
…..
sinon
maFonction ( ….. )
finsi
retourner ( valeur )
finFonction c
Condition
d'arrêt
Appel
récursif
Université de Corse - IUP NTIC2 2005/2006 – Algorithme et Structure de Données
Base, partie strictement récursive
Une fonction récursive « f » peut être appelées depuis son
propre corps de fonction
Soit directement: si la fonction « f » appelle
directement « f », on dit que la récursivité est directe
Soit indirectement à travers une ou plusieurs fonctions
relais: si « f » appelle une fonction « f1 », qui appelle
une fonction « f2 », ..., qui appelle une fonction « fn » et
qui enfin appelle « f » on dit qu'il s'agit d'une
récursivité indirecte.
Université de Corse - IUP NTIC2 2005/2006 – Algorithme et Structure de Données
Principe de fonctionnement
La question qui se pose dans la définition d'une fonction
récursive est celle de la condition d'arrêt de la récursivité
Exemple: calcul de la somme des n premier entiers positifs
somme(n) = n + somme(n-1) et somme(1) = 1
fonction somme ( n : NatuelNonNul) :
NatuelNonNul
variable locale temp : NatuelNonNul
si (n==1)
retourner 1
sinon
temp ← somme(n-1)
retourner n + temp
finSi
FinFonction somme
sans le test
si (n==1), la
fonction ne
s'arrêterait
jamais !
Université de Corse - IUP NTIC2 2005/2006 – Algorithme et Structure de Données
Principe de fonctionnement
Les paramètres de l'appel récursif doivent toujours changer
Sinon l'ordinateur fait un appel infini à la procédure récursive
impliquant un débordement de la pile
Le changement de valeurs conduit l'ordinateur à rencontrer un
ensemble de paramètres vérifiant le test d'arrêt indiquant que
la procédure récursive aura atteint le fond (point terminal)
Les paramètres ainsi que les variables locales sont
désemplilées au fur et à mesure qu'on remonte
les niveaux