Corrigé Fiche Recursivité
Corrigé Fiche Recursivité
Corrigé Fiche Recursivité
Exercice 1
a) Déroulez les procédures récursives suivantes pour k=6 :
Procédure test (↓k : entier) Procédure essai (↓k : entier)
Début Début
Si (k≥0) alors test (k-1); Si (k≥0) alors Écrire (k);
Écrire (k); essai (k-1) ;
fsi;Fin; fsi ;Fin ;
Déroulement :
Procédure Test :
La descente : 1er appel test (6) appel test (5) et empiler (6) appel test (4) et
empiler (5) appel test(3) et empiler (4) appel test (2) et empiler (3) appel test
(1) et empiler (2) appel test(0) et empiler (1) arrêt
Procédure essai
1er appel essai (6)afficher (6) et appel essai (5)afficher (5) et appel essai (4)
afficher (4) et appel essai (3) afficher (3) et appel essai (2) afficher (2) et
appel essai (1) afficher (1) et appel essai (0) arrêt
Onaffiche : 6 5 4 3 2 1
b) L’affichage est croisant pour test car la récursivité est non terminale. Par contre il est
décroissant dans essai car la recursivité est terminale
c) tester (19) tester (9), empiler (1) tester (4) ; empiler (1) ; tester (2) ;
empiler (0) tester (1) ; empiler(0) tester (0) ; empiler (1)
Dépiler et afficher : 10011 = 19 en binaire
tester (13) tester (6), empiler (1) tester (3) ; empiler (0) ; tester (1) ;
empiler (1) tester (0) ; empiler(1)
Dépiler et afficher : 1101 = 13 an binaire
1
Université Oran 1 1eme LMD/MI/S2
Faculté Des Sciences Exactes et Appliquées Département d’informatique
Module :ASD2 2019 /2020 Corrigé de la fiche sur la Récursivité
fin.
Exercice 2
a) Écrire une fonction itérative qui renvoie le reste de la division euclidienne d'un entier a
par un entier b en utilisant les soustractions successives.
Fonction q_it (a,b :entier) :entier
Début
S :entier ;
S0 ;
Tque a≤b faire
aa-b ;
s s+1 ;
ftque
q_it s ;
fin
b) Donner la fonction récursive correspondante.
Fonction q_rec (a,b :entier) :entier
Début
Si a<b alors q_rec 0 ;
Sinon
2
Université Oran 1 1eme LMD/MI/S2
Faculté Des Sciences Exactes et Appliquées Département d’informatique
Module :ASD2 2019 /2020 Corrigé de la fiche sur la Récursivité
Il s’agit d’une fonction non terminale, donc il y a une descente et une remontée.
La descente nous permettra de faire les appels (flèches en bleues).
Une fois avoir atteint le point d’arrêt, on remonte pour effectuer les calculs (flèches en
rouges).
Pour notre exemple, le resultat=2.
Exercice 3
Exercice 4
Debut
Variables i, S :entier;
S←O;
Pour i de 1 à n faire
3
Université Oran 1 1eme LMD/MI/S2
Faculté Des Sciences Exactes et Appliquées Département d’informatique
Module :ASD2 2019 /2020 Corrigé de la fiche sur la Récursivité
S←S+(i*i) ;
Fin pour
Retourner S ;
Fin
Algorithme principal
Debut
Si n=1
Alors retourner 1 /* critère d’arrêt */
Sinon si n > 1
Alors retourner (n*n)+ premiercrecu(n-1)
Finsi
Finsi
Fin
Algorithme principal
Exercice 5
Procédure Tour_Mehdi ( ↓n : entier)
Debut Si (n=0)
Alors Ecrire("Salim a gagné!");
Sinon Tour_Salim(n-1); Fsi; Fin.
Procédure Tour_Salim ( ↓n : entier)
Debut Si (n=0) Alors Ecrire("Mehdi a gagné!");
Sinon Si (n mod 2 = 0) Alors Tour_Mehdi(n-2);
Sinon Tour_Mehdi(n-1)
Fsi;
4
Université Oran 1 1eme LMD/MI/S2
Faculté Des Sciences Exactes et Appliquées Département d’informatique
Module :ASD2 2019 /2020 Corrigé de la fiche sur la Récursivité
Fsi;
Fin
Exercice Supplémentaire :
Fonction Truc (n : Entier) : Entier
Début
X : Entier ;
Si (n<10) alors Truc n*n
Sinon X n mod 10 ;
Truc X*X+ Truc (n div 10)
Fsi ;
Fin.