#python #python-3.x
Вопрос:
Итак, я новичок в кодировании, и я пытаюсь в качестве первого проекта создать алгоритм четвертичного поиска, я пытался сделать это рекурсивно, но это дало мне ошибку «максимальная рекурсия», поэтому я попытался сделать это итеративно, но на этот раз он даже не дает мне ответа, и я не знаю, почему, это код:
def quaternary_search(y,x):
low = 0
high = len(y) -1
mid1 = 0
mid2 = 0
mid3 = 0
while high>=low:
mid1 = int(round(high/4))
mid2 = int(round(high/2))
mid3 = int(round(3*high/4))
if y[mid1] == x:
return mid1
elif y[mid2] == x:
return mid2
elif y[mid3] == x:
return mid3
elif y[mid1] > x and y[mid2] > x and y[mid3] > x:
high = mid1 - 1
elif y[mid1] < x and y[mid2] > x and y[mid3] > x:
low = mid1 1
high = mid2 - 1
elif y[mid1] < x and y[mid2] < x and y[mid3] > x:
low = mid2 1
high = mid3 - 1
elif y[mid1] < x and y[mid2] < x and y[mid3] < x:
low = mid3 1
return -1
y = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
x = int(input("What are you searching?"))
result = quaternary_search(y,x)
if result != -1:
print("Element is at index",str(result))
else:
print("Element is not found")
```
Ответ №1:
просто добавьте 1
переменную x при передаче ее в функцию. индексы списка начинаются с 0, поэтому вам нужно добавить 1.
result = quaternary_search(y,x 1)
кажется, это работает с этим небольшим изменением, здесь, когда я ввожу 8, говорится, что он находится на 8-м индексе.
What are you searching?8
Element is at index 8
Комментарии:
1. попробуйте ввести
6
свой код, и вы получите бесконечный цикл