나는 한동안 그것을보고 있었고 나의 이분 탐색에 잘못된 점을 알 수 없다. 내가 실행하면 'RecursionError : 최대 재귀 깊이가 비교 대상을 초과했습니다'라고 표시됩니다. 아무도 볼 수 없었고 아래에서 무엇이 잘못되었는지 보았습니까? 고맙습니다! 목록 길이가 최종 else
경우, 재귀가 같은과, 다시 같은 목록 (크기)를 얻을 것이다 실제 하나입니다 지금 경우 1. 다음 중간이 0이 될 것입니다 때 발생하는 상상python bisection search exercise
#Write a function called in_bisect
#that takes a sorted list and a target value
#and returns the index
#of the value in the list if it’s there
def in_bisect(t, word):
if len(t) == 0:
return False
middle = len(t) // 2
if t[middle] == word:
return middle
elif t[middle] > word:
return in_bisect(t[:middle], word)
else:
return in_bisect(t[middle:], word)
if __name__ == "__main__":
fruits = ['apple', 'banana', 'kiwi', 'peach', 'watermelon']
in_bisect(fruits, 'banana')
in_bisect(fruits, 'ewf')
무한 재귀를 피하기 위해 재귀 할 때 중간을 제외해야합니다. 마지막 사례에서 제외하는 것을 잊었습니다. –
btw,'return t [middle] '대신에'return middle' –