TD03 Recursivite

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 2

Université de Blida 1 Deuxième année Ingénieur

ALGORITHMIQUES ET COMPLEXITE
Département d’Informatique Année universitaire 2023/2024

TRAVAIL DIRIGE N°3 : RECURSIVITE


EXERCICE 1
Ecrire une fonction récursive nChooseP(p,n:Entier):Entier effectuant le calcul des
coefficients binomiaux :
1 𝑆𝑖 𝑝 = 0 𝑜𝑢 𝑝 = 𝑛
𝐶𝑛𝑝 = { 𝑝 𝑝−1
𝐶𝑛−1 + 𝐶𝑛−1 𝑆𝑖𝑛𝑜𝑛
1. Tracer le calcul du coefficient binomial pour n = 5 et p = 2. Il est impératif de numéroter
les arcs de l’arbre pour que ce qui se passe lors de l’exécution soit très clair.
2. Proposer une solution itérative qui effectue le calcul des coefficients binomiaux.
EXERCICE 2 : RECURSIVITE APPLIQUEE SUR LES TABLEAUX
1. Ecrire une fonction récursive sommeTab(T : Tableau d’Entier, n :Entier) :Entier qui calcule
la somme des éléments d’un tableau.
2. Ecrire une fonction récursive maxTab(T : Tableau d’Entier, n :Entier) :Entier qui renvoie
l’indice de la valeur la plus élevée dans T.
3. Ecrire une fonction récursive estTrie(T : Tableau d’Entier, n :Entier) :Booléen qui permet de
vérifier si le tableau T est tiré.
4. Ecrire une procédure récursive inverserTab(T : Tableau d’Entier, n :Entier) qui permet
d’inverser l’ordre des éléments de T.
5. Ecrire une fonction récursive trans(A: Matrice d’Entiers, n : Entier) : Matrice d’Entiers qui
transforme une matrice carrée 𝐴 ∈ ℤ𝑛×𝑛 en sa transposée 𝐴𝑇 . On suppose que 𝑛 est une
puissance exacte de 2. La fonction doit implémenter le principe « Diviser pour Régner ».
Etant donnée une matrice carrée 𝐴, la fonction divise 𝐴 en 4 sous-matrices :

Dans ce cas, la transposée de 𝐴 est donnée par :

1/2
Université de Blida 1 Deuxième année Ingénieur
ALGORITHMIQUES ET COMPLEXITE
Département d’Informatique Année universitaire 2023/2024

EXERCICE 3
1. Écrire une fonction récursive SuppDoublons(L:Liste) :Liste permettant de supprimer les
doublons dans une liste déjà triée L. Etant donnée la liste [3, 3, 6, 9, 9, 9, 9, 11], la fonction
renvoie [3, 6, 9, 11].
2. Écrire une fonction récursive inserer(L:Liste, X :Entier) :Liste permettant d’insérer un entier
X dans une liste triée L. Etant donnée la liste [3, 3, 6, 9, 9, 11] et X=7, la fonction renvoie [3,
3, 6, 7, 9, 9, 11].

EXERCICE 4
De nombreux problèmes de mathématiques ou de physique se concluent par la résolution
d'une équation 𝑓(𝑥) = 0. Bien souvent, il n'est pas possible de résoudre exactement cette
équation, et on cherche une valeur approchée de la solution (ou des solutions). Pour obtenir
une telle approximation, Newton a proposé une méthode générale définie par la récurrence
suivante :
𝑓(𝑥𝑛−1 )
𝑥𝑛 = 𝑥𝑛−1 − , 𝑎𝑣𝑒𝑐 𝑥0 𝑑𝑜𝑛𝑛é.
𝑓 ′ (𝑥𝑛−1 )
Soit 𝑓(𝑥) = 𝑥 2 − 𝛼, avec 𝛼 ∈ ℤ une constante définie par l’utilisateur.
1. Ecrire une fonction f(x : Réel, alpha : Entier) :Réel qui prend en paramètre 𝑥 et une
constante alpha et calcule 𝑓(𝑥).
2. Ecrire une fonction fprime(x :Réel) :Réel qui prend en paramètre 𝑥 et calcule 𝑓′(𝑥).
3. Ecrire une fonction récursive newton(alpha, n, x0 : Entier) :Réel qui calcule 𝑥𝑛 .
4. Dérouler la fonction newton pour alpha = 9, n = 5, x0 = 2. Que calcule newton(9,5,2) ?
EXERCICE 5
1. On appelle palindrome un mot qui se lit de la même façon de gauche à droite ou de droite à
gauche par exemple ABBA, ELLE.
Ecrire une fonction récursive qui détermine si un mot est un palindrome.
2. Etant donnée une chaîne de caractères, le problème du plus long palindrome consiste à
déterminer la plus longue sous-chaîne qui soit un palindrome.
Par exemple : s= ABCHHCCA, la fonction renvoie : CHHC.
Ecrire une fonction récursive qui extrait la plus longue chaîne qui soit un palindrome.

2/2

Vous aimerez peut-être aussi