def dicho(liste, cible): """ Effectue une recherche dichotomique récursive d'une cible dans un liste triée. Retourne True si la cible est dans la liste, False sinon. """ # cas 1: Condition de sortie False if len(liste) == 0: return False # Calcule l'indice du milieu milieu = len(liste) // 2 # cas 2: Condition de sortie True if liste[milieu] == cible: return True # cas 3: cible < liste[milieu] # -> On recherche dans la moitié gauche elif liste[milieu] > cible: return dicho(liste[:milieu], cible) # cas 4: cible > liste[milieu] # -> On recherche dans la moitié droite else: return dicho(liste[milieu+1:], cible) # --- Exemple d'utilisation --- liste_triee = [1, 3, 5, 7, 9] valeur_presente = 7 print(dicho(liste_triee, valeur_presente)) valeur_non_presente = 4 print(dicho(liste_triee, valeur_non_presente))