Pour progresser...
Exercice 1 : Longueur de chaînes de caractères
Question
Exercice 2 : Représentation binaire d'un nombre décimal
Pour convertir un nombre entier positif N de la base décimale à la base binaire, il faut opérer par des divisions successives du nombre N par 2. Les restes des divisions constituent la représentation binaire.
Question
Écrire une fonction récursive binaire() permettant d’imprimer à l’écran la représentation binaire d’un nombre N.
Indice
On pourra utiliser soit des chaines de caractères, soit des listes pour renvoyer le résultat.
Solution
def binaire(N):
if N == 0:
return ''
else:return str(binaire(N//2)) + str(N % 2)
print(binaire(128))
Exercice 3 : Palindrome
Un mot est un palindrome si on peut le lire dans les deux sans de gauche à droite et de droite à gauche.
Exemple KAYAK est un palindrome.
Question
Écrire une fonction récursive palindrome(), renvoyant True ou False, permettant de vérifier si un mot est palindrome.
La casse ne sera pas prise en compte.
Indice
On peut commencer à comparer la première et la dernière lettre, puis ainsi de suite...
Solution
def palindrome(ch):
if len(ch) == 1 or len(ch)==0:
return True
if ch[0] == ch[-1]:
return palindrome(ch[1:len(ch)-1])
return False
mot = "KAYAK"
print(palindrome(mot))
Exercice 4 : Maximum d'un tableau
Nous allons utiliser la notion de recherche dichotomique :
on coupe notre tableau en 2
on recherche notre maximum dans chacun des tableaux...
Question
Soit un tableau X de N entiers, écrire une fonction récursive simple permettant de déterminer le maximum du tableau.
Indice
Le principe est donc de couper notre tableau en 2 sous-tableau et de tester si le maximum se trouve dans le tableau de gauche ou de droite...
Solution
def maximum(T):
if len(T) == 1:
return T[0]
m = len(T)//2
max1 = maximum(T[:m])
max2 = maximum(T[m:])
if max1 > max2:
return max1
return max2
tab = [1, 10, 3, 4, 5, 6, 7, 8, 9]
print(maximum(tab))
Exercice 5 : Tableau trié ?
Un tableau X est trié par ordre croissant si \(x(i) \leq x(i+1), \forall i\).
Question
Écrire une fonction récursive est_trie( ) permettant de vérifier qu’un tableau X est trié ou non.
Indice
Commençons par tester les premiers éléments et ensuite réduisons notre tableau avec un nouveau appel de la fonction est_trie()
Solution
def est_trie(T):
if len(T) == 0 or len(T) == 1:
return True
if T[0] <= T[1]:
return est_trie(T[1:])
return False
tab = [1, 2, 3, 4, 4, 5, 7, 8]
print(est_trie(tab))
