Ich habe es seit einer Weile angeschaut und ich kann nicht sehen, was mit meiner Halbierung Suche falsch ist. Wenn ich es ausführe, heißt es 'RecursionError: maximale Rekursionstiefe im Vergleich überschritten'. Kann jemand einen Blick darauf werfen und sehen, was unten falsch ist? Vielen Dank!Python Bisektion Suche Übung
#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')
Sie haben Mitte auszuschließen, wenn Sie Rekursion unendliche Rekursion zu vermeiden. Sie haben vergessen, es vom letzten Fall auszuschließen. –
BTW, du 'zurück Mitte' anstelle von 'Rückkehr t [Mitte]' –