IFT 1015 - R ´ecursion
Professeur:
Stefan Monnier
B. K ´egl, S. Roy, F. Duranleau, S. Monnier
D ´epartement d’informatique et de recherche op ´erationnelle Universit ´e de Montr ´eal
hiver 2006
Au programme
[Ni ˜no: 17]
•
R ´ecursion•
•
•
•
•
•
Une fonction qui s’appelle elle-m ˆeme
Le code d’une fonction peut- ˆetre arbitraire
⇒
en particulier, une fonction peut s’appelle elle-m ˆeme.public static void fonction (int a) {
return a * fonction(a - 1);
}
Que se passe-t-il si on fait l’appel suivant?
fonction(4)
Une fonction qui s’appelle elle-m ˆeme
Le code d’une fonction peut- ˆetre arbitraire
⇒
en particulier, une fonction peut s’appelle elle-m ˆeme.public static void fonction (int a) {
return a * fonction(a - 1);
}
Que se passe-t-il si on fait l’appel suivant?
fonction(4)
Rem `ede
•
Similairement aux boucles, il faut ajouter une condition d’arr ˆet pour´eviter les appels r ´ecursifs infinis.
•
Ces conditions d’arr ˆet sont reli ´ees au cas de base du probl `eme `a r ´esoudre par r ´ecurrence.Ex.:
– Factoriel:
f
0= 1
,f
1= 1
etf
n= n · f
n−1– Fibonacci:
f
0= 0
,f
1= 1
etf
n= f
n−1+ f
n−2Trace d’ex ´ecution
Que se passe-t-il lors d’un appel d’une fonction?
→
La machine garde en m ´emoire une adresse de retour, i.e. o `u poursuivre l’ex ´ecution du programme au retour d’une fonction.→
Un espace m ´emoire est r ´eserv ´e pour les param `etres de la fonction, et ses variables locales.Toute cette m ´emoire s’appelle la pile d’ex ´ecution.