我想使用python植入递归搜索,它将为给定的键
示例划分上半部分:list[2, 4, 6, 9, 10]
for the key is 6 case, return index is 3
for the key is 4 情况下,
如果键不在列表中,则返回索引为 2
即。键是 7。它仍然需要返回索引 3,因为 9 大于 7。
如果键不在数组中,我的代码有问题要做递归,
即使我设置了边界条件,我认为这会没问题,它不能通过。非常感谢任何建议。
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)
例如 list [2, 4, 6, 9, 10] 和 key 为 7
代码不能终止
我需要为 7 的上分区设置什么样的边界条件并获得结果?