Je suis novice en python, donc je ne sais pas s'il me manque quelque chose d'évident (comme par exemple un deux-points ou un point quelque part). J'essaye de faire fonctionner cet algorithme de recherche binaire, mais si je passe une liste plus grande que 3 éléments, le programme passe à un freinage à récursion infinie et le maximum défini en python.La recherche binaire en utilisant la récursivité est dans une boucle infinie
les cas de base fonctionnent bien.
Les listes [] et [element1] passent par.
[element1, element2, element3, ..., element99] se coincer ...
Voici le code:
def binsearch(pylist, element):
if len(pylist) == 0:
return False
elif len(pylist) == 1 and pylist[0] == element:
return True
else:
mid = len(pylist)/2 - 1
if element > pylist[mid]:
binsearch(pylist[mid:], element)
else:
binsearch(pylist[:mid], element)
Merci.
Cela pourrait probablement vous aider: https://interactivepython.org/runestone/static/pythonds/SortSearch/TheBinarySearch.html – iFlo
Pensez à ce qui se passe si vous exécutez 'binsearch ([1], 2)'. –
Rien d'évident pour moi. Dans la plupart des cas, l'interpréteur Python diagnostiquerait des failles comme celles que vous mentionnez de toute façon (mais pas toujours bien sûr). Conseil: Procurez-vous un environnement de développement (IDE) qui vous permet de définir des points d'arrêt afin d'examiner le contenu des variables de votre programme ou de placer simplement des instructions * print * temporaires pour en déduire l'origine de votre raisonnement faux. –