Я бы хотел внедрить рекурсивный поиск, используя python, он разделит верхнюю часть для данного ключа
пример: список [2, 4, 6, 9, 10]
для ключа 6 регистр возврата 3
для ключа равен 4 регистр возврата 2
, если ключа нет в списке ie. ключ равен 7. Он по-прежнему должен возвращаться с индексом 3, потому что 9 больше 7.
Мой код имеет проблемы с рекурсивностью, если ключ отсутствует в массиве,
, даже если я установил граничное условие, и я предполагаю, это будет хорошо, это не может go до конца. Любой совет высоко ценится.
def qReturn(alist, start, end, key):
if key is 1:
return 0
mid = (start + end)//2
if alist[mid] < key:
return qReturn(alist, mid + 1, end, key)
elif alist[mid] > key:
return qReturn(alist, start, mid, key)
if (start == end | end == mid | start > mid):
return mid+1
else:
return mid+1
alist = input('Enter the sorted list of numbers: ')
alist = alist.split()
alist = [int(x) for x in alist]
key = int(input('The number to search for: '))
index = qReturn(alist, 0, len(alist), key)
print('number q is at %d.' %index)
Например, список [2, 4, 6, 9, 10] и ключ 7
Код не может быть завершен
Какой граничного условия мне нужно установить и получить результат для верхнего раздела для 7?