Mam taki kod i nie wiem jak zrobić tak aby obie funkcje zwracały -1 jak nie powiedzie się wyszukiwanie w liście:
def binsearch_recur(array, val, left=0, right=None):
if right is None:
right = len(array) - 1
mid = (left + right) // 2
if val < array[mid]:
right = mid
return binsearch_recur(array, val, left, right)
elif val > array[mid]:
left = mid
return binsearch_recur(array, val, left, right)
else:
return mid, array[mid]
def binsearch_iter(array, val):
left = 0
right = len(array) - 1
mid = (left + right) // 2
while val != array[mid]:
if val < array[mid]:
right = mid
if val > array[mid]:
left = mid
mid = (left + right) // 2
return mid, array[mid]
Jak dałem instrukcję if sprawdzającą czy left == right i podstawiłem do binsearch_recur wartość -4 to program działa zgodnie z oczekiwaniami, lecz gdy dałem inną nieistniejącą wartość w tablicy np. 100 to otrzymuję błąd:
RecursionError: maximum recursion depth exceeded in comparison
Wie ktoś jak poprawić obie funkcje by zwracały -1 jak nie można znaleźć elementu w tablicy?