tg4/Chapitre 2 - Récursivité/exercices.py

70 lines
1.9 KiB
Python
Raw Normal View History

2023-09-21 13:09:01 +00:00
def rebours(n):
if n == 0:
print()
return
print(n, end=" ")
rebours(n-1)
rebours(12)
def compte(t, n=1):
print(n, end=" ")
if n < t:
compte(t, n+1)
else:
print()
compte(5)
2023-09-21 13:41:09 +00:00
def sommeDesCarres(n):
if n == 1:
return 1
return n**2 + sommeDesCarres(n-1)
def produit(liste):
if len(liste) == 1:
return liste[0]
return liste[0] * produit(liste[1:])
def sommeDesPositifs(liste):
if len(liste) == 0:
return 0
value = liste[0] if liste[0] > 0 else 0
2023-09-21 13:52:09 +00:00
return value + sommeDesPositifs(liste[1:])
def estPalindrome(x):
if len(x) == 2:
return x[0] == x[1]
elif len(x) == 1:
return True
2023-09-27 08:46:04 +00:00
return x[0] == x[-1] and estPalindrome(x[1:-1])
def renvoitLongueur(liste: list) -> int:
"""
Fonction récursive qui renvoie la longueur de la
2023-09-27 08:56:46 +00:00
liste donné en paramètres sans utiliser la fonction `len`.
2023-09-27 08:46:04 +00:00
"""
if not liste: # Si la liste est vide
return 0 # On renvoie 0
return 1 + renvoitLongueur(liste[1:]) # On renvoie 1 plus la longueur de la liste sans le premier element
2023-09-27 08:46:46 +00:00
def inverse_lordre(liste: list) -> list:
2023-09-27 08:46:04 +00:00
"""
Fonction récursive qui renvoie l'inverse de la liste
2023-09-27 08:56:46 +00:00
donnée en paramètres sans utiliser la fonction `reverse`.
2023-09-27 08:46:04 +00:00
"""
if not liste: # Si la liste est vide
return [] # On renvoie une liste vide
# On renvoit la concatenation d'une liste contenant le dernier element
# de `liste` avec l'inverse de la `liste` sans le dernier element
return [liste[-1]] + inverse_lordre(liste[:-1])
2023-09-27 08:56:46 +00:00
def permier_chiffre(entier: int) -> int:
"""
Fonction qui renvoie le premier chiffre de l'entier donné en paramètres.
"""
2023-09-27 09:00:38 +00:00
if entier < 10: # Si l'entier est inférieur à 10 (donc que c'est le dernier chiffre)
return entier # On renvoie le chiffre
return permier_chiffre(entier // 10) # Sinon on divise `entier` par 10 et on revérifie avec `premier_chiffre`