def factorielle(n): if n == 0: return 1 else: return n * factorielle(n - 1) # Exemple d'utilisation print(factorielle(5)) # Résultat : 120 def somme_liste(liste): if not liste: return 0 else: return liste[0] + somme_liste(liste[1:]) # Exemple d'utilisation print(somme_liste([1, 2, 3, 4])) # Résultat : 10 def recherche_binaire(liste, x, debut=0, fin=None): if fin is None: fin = len(liste) - 1 if debut > fin: return -1 milieu = (debut + fin) // 2 if liste[milieu] == x: return milieu elif liste[milieu] < x: return recherche_binaire(liste, x, milieu + 1, fin) else: return recherche_binaire(liste, x, debut, milieu - 1) # Exemple d'utilisation print(recherche_binaire([1, 3, 5, 7, 9], 7)) # Résultat : 3 def puissance(a, b): if b == 0: return 1 else: return a * puissance(a, b - 1) # Exemple d'utilisation print(puissance(2, 3)) # Résultat : 8 def somme_chiffres(n): if n == 0: return 0 else: return n % 10 + somme_chiffres(n // 10) # Exemple d'utilisation print(somme_chiffres(1234)) # Résultat : 10 def permutations(chaine): if len(chaine) == 0: return [""] resultat = [] for i in range(len(chaine)): lettre = chaine[i] reste = chaine[:i] + chaine[i+1:] for perm in permutations(reste): resultat.append(lettre + perm) return resultat # Exemple d'utilisation print(permutations("abc")) # Résultat : ['abc', 'acb', 'bac', 'bca', 'cab', 'cba'] def plus_grand(liste): if len(liste) == 1: return liste[0] else: max_du_reste = plus_grand(liste[1:]) return liste[0] if liste[0] > max_du_reste else max_du_reste # Exemple d'utilisation print(plus_grand([3, 5, 9, 2, 8])) # Résultat : 9 def longueur_chaine(chaine): if chaine == "": return 0 else: return 1 + longueur_chaine(chaine[1:]) # Exemple d'utilisation print(longueur_chaine("recursivité")) # Résultat : 11 def somme_pairs(liste): if not liste: return 0 elif liste[0] % 2 == 0: return liste[0] + somme_pairs(liste[1:]) else: return somme_pairs(liste[1:]) # Exemple d'utilisation print(somme_pairs([1, 2, 3, 4, 5, 6])) # Résultat : 12 def escalier(n): if n == 0: return 1 elif n == 1: return 1 else: return escalier(n - 1) + escalier(n - 2) # Exemple d'utilisation print(escalier(5)) # Résultat : 8 def decomposition_puissance_2(n): if n == 0: return [] puissance = 1 while puissance * 2 <= n: puissance *= 2 return [puissance] + decomposition_puissance_2(n - puissance) # Exemple d'utilisation print(decomposition_puissance_2(10)) # Résultat : [8, 2] def est_triee(liste): if len(liste) <= 1: return True else: return liste[0] <= liste[1] and est_triee(liste[1:]) # Exemple d'utilisation print(est_triee([1, 2, 3, 4, 5])) # Résultat : True print(est_triee([1, 3, 2, 4, 5])) # Résultat : False def diviser_par_2(n): if n == 0: return 0 elif n < 2: return 0 else: return 1 + diviser_par_2(n - 2) # Exemple d'utilisation print(diviser_par_2(10)) # Résultat : 5 def sous_ensembles(liste): if len(liste) == 0: return [[]] else: sous_ens = sous_ensembles(liste[1:]) return sous_ens + [[liste[0]] + sous_liste for sous_liste in sous_ens] # Exemple d'utilisation print(sous_ensembles([1, 2, 3])) # Résultat : [[], [3], [2], [2, 3], [1], [1, 3], [1, 2], [1, 2, 3]] def multiplication(a, b): if b == 0: return 0 elif b > 0: return a + multiplication(a, b - 1) else: return -multiplication(a, -b) # Exemple d'utilisation print(multiplication(3, 5)) # Résultat : 15 print(multiplication(3, -5)) # Résultat : -15 def addition_recursive(a, b): if b == 0: return a else: return addition_recursive(a + 1, b - 1) # Exemple d'utilisation print(addition_recursive(5, 3)) # Résultat : 8 def soustraction_recursive(a, b): if b == 0: return a else: return soustraction_recursive(a - 1, b - 1) # Exemple d'utilisation print(soustraction_recursive(10, 3)) # Résultat : 7