Vous êtes sur la page 1sur 4

Ministère De L'enseignement Supérieur Et De La Recherche Scientifique

Université Hassiba Benbouali de Chlef


Faculté des Sciences Exactes et Informatique
Département de TC en Sciences Exactes et Informatique
Module : Algorithmique et structure de données 2

Fiche TD N° 01.2 : La Récursivité

1. Qu’est ce que la récursivité ?


2. Est-ce que dans tout sous-programme récursif il faut une condition d’arrêt ?
3. Qu’est ce qu’une récursivité directe et indirecte ?
4. Comment concevoir un sous-programme récursif ?
5. Soit les deux algorithmes suivants :

PROCEDURE Toto (n : entier) PROCEDURE Tata (n : entier)


Début Début
Si n = 0 alors Si n = 0 alors
Ecrire (0) ; Ecrire (0) ;
Sinon Sinon
Ecrire (n) ; Tata (n - 1) ;
Toto (n - 1) ; Ecrire (n) ;
Fin si ; Fin si ;
Fin. Fin.

Qu’affichent ces deux algorithmes : Toto(5) et Tata(5) ? Faire une trace.


6. Que calcule la fonction suivante :

FONCTION Toto (n : entier) : entier ;


Début Chapitre 1 : Les sous-programmes : La Récursivité
Si n = 0 alors
Retourne 1 ;
Sinon
Retourne n * Toto (n - 1) ;
Fin si ;
Fin.

7. Ecrire une fonction récursive qui calcule le PGCD des deux nombres entiers
positifs.

1
8. Que calcule la fonction suivante :

FONCTION Toto (n : entier) : entier ;


Début
Si n ≤ 1 alors
Retourne 0 ;
Sinon
Retourne 1 + Toto (n/2) ;
Fin si ;
Fin.

9. Ecrire une fonction récursive qui calcule an pour a réel et n entier positif. On
suppose qu’on ne dispose pas de la fonction puissance.
10. Ecrire une fonction récursive qui calcule la factorielle d’une valeur entière positive
n.

Exercices supplémentaires

11. Ecrire une fonction récursive qui calcule le nombre d’occurrences n d’un caractère
donné c dans une chaîne de caractères donnée s.
12. Ecrire une fonction récursive qui affiche les éléments d’un tableau t en ordre
inverse à celui du tableau.
13. Ecrire un sous-programme récursif qui calcule la somme des n premiers carrés.
Par exemple, si n vaut 3, ce sous-programme calculera 12 + 22 + 32. Ce sous
programme n’est défini que pour un n supérieur à 0.
14. Ecrire un sous-programme récursif qui calcule la somme des éléments positifs d’un
tableau. Chapitre 1 : Les sous-programmes : La Récursivité

15. Ecrire une fonction récursive qui calcule les valeurs de la série de Fibonacci,
définie par :
 u0 = 0
 u1 = 1
 un = un−1 + un−2
Ecrivez cette fonction sous forme itérative et sous forme récursive. Laquelle des
deux variantes est préférable ici ?
16. Ecrire un sous-programme récursif qui calcule le produit des éléments d’un
tableau.

2
17. Ecrire deux Fonctions récursive div et mod qui, à partir de deux entiers positifs a et
b, renvoie le quotient pour l’une, et le reste pour l’autre de la division de a par b
sans utiliser l’opérateur de division.
18. Ecrire une fonction récursive (multiplication égyptienne) qui calcule le produit de
deux entiers positifs suivant la méthode de la multiplication égyptienne, c'est-à-
dire : x*y = y + (x - 1) * y si x est impair et x*y = (x/2) * (y*2) si x est pair.
19. Ecrire une fonction récursive qui retourne le maximum des éléments d’un tableau.
20. Ecrire une Fonction récursive qui renvoie la chaîne "miroir" d'une chaîne (par
exemple "abcde" deviendra "edcba").
21. Un entier naturel n étant donné, on calcule le produit prod(n) de ses chiffres dans
son écriture en base 10, puis le produit des chiffres de prod(n) dans son écriture
en base 10, et on recommence ainsi l’application prod jusqu’à obtenir un chiffre
entre 0 et 9. Le nombre minimal de fois où on applique prod pour transformer n en
un chiffre entre 0 et 9 est appelé persistance de n.
Par exemple :
 La persistance de 9 est égale à 0,
 Celle de 97 est égale à 3, car :
o prod(97) = 9×7 = 63,
o prod(63) = 6×3 = 18,
o prod(18) = 1×8 = 8.
 Ecrire une fonction récursive prod qui prend en argument un entier et qui
renvoie le résultat du produit de tous ses chiffres en base 10.
 Ecrire une fonction récursive pers qui prend en argument un entier et qui Chapitre 1 : Les sous-programmes : La Récursivité
renvoie la valeur de sa persistance.
 Fonction trouve_pers qui étant donné un entier p donné, renvoie le plus petit
entier n qui a pour persistance p.
22. Ecrire une fonction récursive min_max qui à un tableau donné (d'entiers distincts)
associe le couple des indices du plus petit élément et du plus grand élément. Par
exemple, min_max [7;2;9;3;12;4] renvoie : 2, 5.

1 2 3 4 5 6

7 2 9 3 12 4

23. Ecrire deux fonctions récursives pair et impair.

3
Exemple de raisonnement récursif :

Les tours de Hanoi un exemple très connu de raisonnement récursif apparaît dans le
problème des tours de Hanoi. Il s’agit de n disques de tailles différentes, trouées au
centre, qui peuvent être empilés sur trois piliers.

Au début, tous les disques sont empilés sur le pilier de gauche, en ordre croissant de
la taille, comme dans la figure suivante. Le but du jeu est de déplacer les disques un par
un pour reconstituer la tour initiale sur le pilier de droite. Il y a deux règles

 on peut seulement déplacer un disque qui se trouve au sommet d’une pile (non
couvert par un autre disque),
 un disque ne doit jamais être placé sur un autre plus petit.
Le jeu est illustré dans la figure suivante.

‫النجاح في شيء يأتي من االقتناع به‬


Chapitre 1 : Les sous-programmes : La Récursivité

Vous aimerez peut-être aussi