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) 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 return value + sommeDesPositifs(liste[1:]) def estPalindrome(x): if len(x) == 2: return x[0] == x[1] elif len(x) == 1: return True 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) -> 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]) def premier_chiffre(entier: int) -> int: """ Fonction qui renvoie le premier chiffre de l'entier donné en paramètres. """ if entier < 10: # Si l'entier est inférieur à 10 (donc que c'est le premier chiffre) return entier # On renvoie le chiffre return premier_chiffre(entier // 10) # Sinon on divise `entier` par 10 et on revérifie avec `premier_chiffre` def bhaut(n: int): """ Affiche un triangle de points dont la hauteur et la largeur est de n points en ASCII art. Cette fonction est récursive. """ if n == 0: return # Si n est égal a 0 on ne fait rien print("*" * n) # On affiche n points bhaut(n-1) # On fait appel à la fonction avec n-1 points pour afficher la ligne suivante def bbas(n: int): """ Affiche un triangle de points dont la hauteur et la largeur est de n points en ASCII art. Cette fonction est récursive. """ if n == 0: return # Si n est égal a 0 on ne fait rien bbas(n-1) # On fait appel à la fonction avec n-1 points pour afficher la ligne suivante print("*" * n) # On affiche n points def pair(n: int) -> bool: """ Fonction récursive qui renvoie True si n est pair et False sinon. """ if n == 0: # Si n est égal a 0 alors return True # On renvoie True pour dire que c'est pair return impair(n-1) # Sinon on fait appel à la fonction impair avec n-1 def impair(n: int) -> bool: """ Fonction récursive qui renvoie True si n est impair et False sinon. """ if n == 0: # Si n est égal a 0 alors return False # On renvoie False pour dire que cc n'est pas impair return pair(n-1) # Sinon on fait appel à la fonction pair avec n-1