UNIVERSITE IBN ZOHR Année Universitaire 2023/2024
ENSIASD -TAROUDANT
Travaux dirigés d’algorithmique : Série N°3
Objectifs :
• Ecrire des fonctions récursives
• Calculer la complexité d’un algorithme
Récursivité :
Exercice 1 :
Ecrire un algorithme qui permet de calculer la division entière comme suite :
Exercice 2 :
Ecrire une procédure récursive qui permet d'afficher la valeur binaire d'un entier n.
Exercice 3 :
Ecrire une fonction récursive en C qui permet de calculer la puissance d’un nombre.
Exercice 4 :
Ecrire une fonction récursive qui permet d’afficher les valeurs d’un tableau.
Exercice 5 :
Ecrire le corps des fonction récursives suivantes :
void affiche_inverse(char c[], int l); // Afficher en inverse une chaine de caractères
void affiche_pyramide(char c, int h); // Afficher un pyramide de caractères
Complexité
Exercice 6 :
1
UNIVERSITE IBN ZOHR Année Universitaire 2023/2024
ENSIASD -TAROUDANT
Calculer la complexité de l’algorithme suivant :
Algorithme afficher;
variables n,i: entier;
Début
Ecrire("Entrer un nombre:");
Lire(n);
Pour i<- n + 1 jusqu'à n+5 faire
Ecrire(i);
FinPour
Fin
Exercice 7 :
Algorithme Tab2D; Ecrire("Affichage des éléments du tableau :");
variables Tableau T[][],n,i,j: entier; Pour i<-0 jusqu'à n-1 faire
Début Pour j<-0 jusqu'à n-1 faire
Ecrire("Donner la taille du tableau:"); Ecrire(T[i][j]);
Lire(n); FinPour
Redimensionner T[n][n]; FinPour
Ecrire("Entrer les éléments du tableau:"); Fin
Pour i<-0 jusqu'à n-1 faire
Pour j<-0 jusqu'à n-1 faire
Lire(T[i][j]);
FinPour
FinPour
Exercice 8 :
Calculer la complexité de cette fonction récursive :
Fonction Fibo(n:entier): entier;
DébutFonction
Si (n<=0) Alors
Returner 1
Sinon
Returner Fibo(n-1) + Fibo(n-2);
FinFonction
2
UNIVERSITE IBN ZOHR Année Universitaire 2023/2024
ENSIASD -TAROUDANT
Exercice 9 :
Calculer la complexité de cette fonction :
void ex9(int n, int s){
int p=n; s=0;
while(p>=1){
int i = 1;
while(i<=n){
s+=p;
i++;
}
p/=2;
}
Exercice 10 :
Calculer la complexité de cette fonction :
void ex10(int n){
for(int i=n; i>0 ; i=i/2){
for(int j=1; j<n ; j=j*2){
for(int k=0; k<n ; k=k+2) // instructions
}
}
}