Vous êtes sur la page 1sur 4

Algorithmique, Structures de

1ère année LBC Données et Programmation 2

TD1 : Récursivité

Exercice1

Ecrire les versions itératives puis récursives des fonctions et des procédures qui calculent le
nième terme de la suite définie par :

U0 = 2
Un = 3Un-1/(Un-1+5) pour n > 0

Exercice 2

Soit l’algorithme suivant :

void Affichage()
{
int i ;
for(i=1 ;i<=10 ;i++)
printf(‘’%d’’,i) ;
}

Transformer cette procédure en une procédure récursive.

Exercice 3

Ecrire une fonction récursive permettant de convertir un nombre N donné (en base 10)
en une base b (2  b  10).

Exercice 4

Ecrire une fonction récursive qui calcule la longueur de la représentation décimale d'un
entier N.
Exemple : longueur(64589) = 5

Exercice 5

1- Ecrire une fonction itérative qui calcule la factorielle d’un nombre entier N.
N ! = 1*2*3*…..*(N-1)*N
2- Transformer cette fonction en une fonction récursive.
Exercice 6

Ecrire une fonction récursive qui calcule la somme des éléments d'un tableau T de n entiers.
Ecrire une fonction récursive qui calcule la somme des éléments d'un tableau à partir d'une
position i.
Algorithmique, Structures de
1ère année LBC Données et Programmation 2

Exercice 7

Soit une chaine « CH », on vous demande d’écrire les procédures/ fonctions récursives
suivantes :

1- Une procédure Envers (CH : chaine, L : entier) qui affiche la chaine CH à l’envers
sans changer son contenu.
2- Une fonction Palindrome (ch : chaine, debut,fin : entier) qui retourne 1 si CH est
palindrome, 0 sinon. Un palindrome est un mot qui reste le même qu’on le lise de
gauche à droite ou de droite à gauche.

Exercice 8

Ecrire une procédure récursive qui lit une liste de caractères, qui se termine par un '#', et
l'affiche à l'envers.
Ecrire une procédure récursive qui lit une liste d'entiers positifs, qui se termine par 0, et
affiche les sommes de la fin vers le début.
Exemple :
On lit la liste 3, 2, 5, 6, 1, 4, 0.
La procédure affiche 0, 4, 5, 11, 16, 18, 21.

Exercice 9

Ecrire une fonction récursive PGCD_EUC qui retourne le PGCD de 2 entiers a et b en


utilisant l’algorithme d’Euclide qui s’appuie sur les propriétés suivantes :
PGCD(a,b) = b Si b est un diviseur de a
PGCD(a,b) = PGCD (b, a mod b) Sinon

Exemple :
PGCD(36,20) = PGCD(20,16) = PGCD(16,4) = 4

Exercice 10

Ecrire une fonction récursive (Recherche) qui vérifie si un entier x est présent dans un tableau
T de n entiers.
Reprendre cette fonction si le tableau T est trié dans un ordre croissant.

Exercice 11

Ecrire la version récursive de la fonction de recherche dichotomique dans un tableau d'entiers.

Exercice 12

Ecrire une fonction récursive CNP qui calcule le nombre de combinaisons de p éléments pris
parmi n éléments différents par la formule suivante :

𝐶𝑛1 = 𝑛
Algorithmique, Structures de
1ère année LBC Données et Programmation 2

𝐶𝑛𝑛 = 1
𝑝 𝑝 𝑝−1
𝐶𝑛 = 𝐶𝑛−1 + 𝐶𝑛−1

En utilisant la fonction CNP, afficher le triangle de Pascal d'ordre N donné, sans passer par un
tableau.

Exercice 13

Ecrire une fonction récursive qui réalise l'intersection de deux tableaux A et B (l'intersection
est un tableau C qui contient les éléments communs aux deux tableaux).

Exercice 14

Ecrire une fonction récursive qui calcule la somme des n premiers entiers (1+2+…+n).
Ecrire une fonction récursive qui multiplie un entier A par un entier positif B (en utilisant
l'opération d'addition).
Ecrire une fonction récursive qui élève un entier A à la puissance d'un entier B.

Exercice 15

Soit la suite U définie à partir de :

𝑈0 = 2
{ 𝑈1 = 3
𝑈𝑛 = 𝑈𝑛−1 + 2 ∗ 𝑈𝑛−2 (𝑛 ≥ 2)

On suppose que cette suite est croissante.


1- Une procédure Saisie permettant de saisir un entier n (n >0)
2- Une fonction suite (version récursive) permettant de calculer et retourner le (n+1)ième
terme de la suite U.
3- Ecrire un programme principal pour tester les procédures/fonctions ci-dessus.

Exercice 16

On souhaite calculer la décomposition d'une somme donnée en pièces de 1 dinars, 500


millimes, 100 millimes, 50 millimes, 20 millimes, 10 millimes, 5 millimes et 1 millime.
Pour cela, on définit le tableau Pièces comportant les valeurs de toutes les pièces :
Int Pièces [8] = {1000, 500, 100, 50, 20, 10, 5, 1}
Une décomposition d'une somme est définie comme un tableau de 8 entiers comportant le
nombre de pièces de 1000, de 500, de 100, de 50, de 20, de 10, de 5 et de 1.
Exemple : une décomposition de la somme 3250 millimes peut être la suivante : { 3, 0, 2, 1,
0,0,0,0}
Ecrire une procédure récursive Decomposer qui permet d'afficher une décomposition d'une
somme donnée exprimée en millimes.

Exercice 17
Algorithmique, Structures de
1ère année LBC Données et Programmation 2

Le calcul de (cos(nx), sin(nx))

Écrire une fonction qui prend en entrée un entier n et une paire de valeurs réelles qui
sont en fait les
valeurs du cosinus et du sinus d’un certain angle x, et qui renvoie la paire (cos(nx),
sin(nx)). Autrement
dit, le deuxième argument de la fonction est une paire (a,b) telle que a = cosx et b = sinx.
Le schéma de
calcul doit bien évidemment être récursif. On pourra se servir des formules de
trigonométrie suivantes :
cos(nx) = cos ((n − 1)x) cos(x) − sin ((n − 1)x) sin(x)
sin(nx) = sin ((n − 1)x) cos(x) + cos ((n − 1)x) sin(x)

Exercice 18

Ecrire et concevoir une fonction récursivequi, à partir d’un entier positif n ne contenant
aucun 0 dans ses chiffres, renverse les chiffres de cet entier. Par exemple l’image de
356457 par cette fonction serait
754653.

Exercice 19

Écrire une fonction récursive qui calcule


n
 k2 pour un entier n donné.
k=0

Exercice 20

Ecrire une version récursive de la procédure de tri par sélection.

Exercice 21

Ecrire une version récursive de la procédure de tri à Bulles.

Exercice 22

Ecrire une version récursive de la fonction qui calcule le nième terme de la suite de Fibonacci.

Exercice 23

Ecrire une fonction récursive qui calcule la somme des chiffres de la représentation
décimale d'un entier N.
Exemple : som_chiffres(64589) = 32

Vous aimerez peut-être aussi