저는 파이썬에 익숙하지 않아서 뭔가 예를 들어 콜론이나 마침표 같은 어딘가에 놓치고 있는지 잘 모릅니다.재귀를 사용하는 바이너리 검색은 무한 루프에 들어갑니다.
이 바이너리 검색 알고리즘을 작동 시키려고합니다. 그러나 3 개 이상의 요소를 전달하면 프로그램은 무한 반복되는 제동과 파이썬의 최대 집합으로 이동합니다.
기본 사례가 정상적으로 작동합니다.
[] 및 [element1] 목록이 통과합니다.
[에서 element1, element2에, element3, ..., element99]
다음은 코드의 ... 박히 :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)
감사합니다.
이 아마 당신을 도울 수 : https://interactivepython.org/runestone/static/pythonds/SortSearch/TheBinarySearch.html – iFlo
실행할 경우 발생하는 생각해'binsearch ([1], 2)'. –
나에게 분명하지 않습니다. 대부분의 경우 파이썬 인터프리터는 어쨌든 언급 한 것과 같은 결함을 진단합니다 (항상 그런 것은 아닙니다). 조언 : 프로그램에서 변수의 내용을 검사 할 수 있도록 중단 점을 설정할 수있는 개발 환경 (IDE)을 확보하거나 추론이 끝난 위치를 추론 할 수 있도록 임시 * 인쇄 * 명령문을 넣기 만하면됩니다. 잘못된. –