• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wyszukiwanie binarne w Pythonie

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
+1 głos
86 wizyt
pytanie zadane 23 września 2022 w Python przez doskanoness Obywatel (1,240 p.)

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?

2 odpowiedzi

0 głosów
odpowiedź 23 września 2022 przez tmar1212 Bywalec (2,600 p.)
0 głosów
odpowiedź 23 września 2022 przez VBService Ekspert (227,090 p.)

Zawsze można posłużyć się:  Try Except

2
komentarz 23 września 2022 przez doskanoness Obywatel (1,240 p.)
hehe

Podobne pytania

+1 głos
1 odpowiedź 192 wizyt
pytanie zadane 25 czerwca 2021 w Algorytmy przez Tanormalnie Użytkownik (550 p.)
0 głosów
1 odpowiedź 1,281 wizyt
pytanie zadane 14 maja 2018 w Python przez ForeverFriendzone Dyskutant (7,520 p.)
0 głosów
0 odpowiedzi 229 wizyt

90,817 zapytań

139,493 odpowiedzi

313,549 komentarzy

60,311 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...