Solution TP/TD 2: La Récursivité / Applications
Exercice 1
La fonction somme récursive sera écrite comme suite :
def somme(L):
if not L:
return 0
return L[0]+somme(L[1:])
Exercice 2
def Suite(n):
if n <= 2:
return 1
return 3*Suite(n-1)+Suite(n-2)
print(Suite(4))
Exercice 3
def maximum(T):
if len(T) == 1:
return T[0]
# principe de la recherche dichotomique
m = len(T)//2
max1 = maximum(T[:m])
max2 = maximum(T[m:])
if max1 > max2:
return max1
return max2
Exercice 4
def puiss_rec(x,n):
if n == 0:
return 1
else:
return (x*puiss_rec(x,n-1))
x=float(input('Entrez un réel x :'))
n=int(input('Entrez un entier positif n: '))
print('le résultat x**n = ', puiss_rec(x,n))
Exercice 5
def euclide_recursive(a,b):
if b == 0:
return a
else:
return euclide_recursive(b,a%b)
a=int(input('Entrez la valeur de a '))
b=int(input('Entrez la valeur de b '))
print('pgcd(a,b)= ',euclide_recursive(a,b))
Exercice 6
def recherche_dichotomique_recursive(L,x):
if L==[]:
return ("Elément non présent")
else:
milieu=len(L)//2
if x==L[milieu]:
return ("Elément présent")
elif x>L[milieu]:
return recherche_dichotomique_recursive(L[milieu+1:],x)
else:
return recherche_dichotomique_recursive(L[:milieu],x)
L=[10,14,16,19,20,25,30]
x=25
print(recherche_dichotomique_recursive(L,x))
Exercice 7
def afficher_elements(lst, index):
if index < len(lst):
print(lst[index])
afficher_elements(lst, index + 1)
# Exemple d'utilisation :
ma_liste = [15, 22, 13, 64, 50]
indice_depart = 0
afficher_elements(ma_liste, indice_depart)
Exercice 8
def est_palindrome(chaine):
if len(chaine) <= 1:
return True
else:
if chaine[0] == chaine[-1]:
return est_palindrome(chaine[1:-1])
else:
return False
def main():
chaine = input("Entrez une chaîne de caractères : ")
if est_palindrome(chaine):
print("La chaîne est un palindrome.")
else:
print("La chaîne n'est pas un palindrome.")
if __name__ == "__main__":
main()