我想使用python植入递归搜索,它将为给定的键划分上部
示例:列表[2,4,6,9,10]
对于键为6的情况,返回索引为3
对于键为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)
例如,列表[2,4,6,9,10],键是7
此代码无法终止
我需要设置什么样的边界条件并得到7的上分区结果
输出:
递归:
输出:
相关问题 更多 >
编程相关推荐