diff --git a/Chapitre 2 - Récursivité/exercices.py b/Chapitre 2 - Récursivité/exercices.py index e239b0b..a632a49 100644 --- a/Chapitre 2 - Récursivité/exercices.py +++ b/Chapitre 2 - Récursivité/exercices.py @@ -38,4 +38,26 @@ def estPalindrome(x): return x[0] == x[1] elif len(x) == 1: return True - return x[0] == x[-1] and estPalindrome(x[1:-1]) \ No newline at end of file + return x[0] == x[-1] and estPalindrome(x[1:-1]) + +def renvoitLongueur(liste: list) -> int: + """ + Fonction récursive qui renvoie la longueur de la + liste donné en paramètres sans utiliser la fonction `len` + """ + 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 + +def inverse_lordre(liste: list): + """ + Fonction récursive qui renvoie l'inverse de la liste + donnée en paramètres sans utiliser la fonction `reverse` + """ + 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]) +