-2
因此,我被指示创建一个带有2个参数(一个列表和一个数字)的函数,该函数使用二进制递归搜索来查看数字是否在列表中。如果数字在列表中,我要返回它的索引,如果它不是,我将返回-1。到目前为止,我有使用二进制递归函数查找列表的索引
def findIndex(alist,num):
print(alist)
if len(alist) % 2 == 0:
mid = int((len(alist)/2)-1)
else:
mid = ((len(alist)//2))
if alist[mid] == num:
print(mid)
elif alist[mid] > num:
findIndex(alist[0:mid],num)
elif alist[mid] < num:
findIndex(alist[mid+1:],num)
我知道二进制搜索是如何工作的。做到中间,如果它不是你正在搜索的数字,将该数字与你正在搜索的数字进行比较。如果它大于您要搜索的数字,请搜索列表的前半部分。如果较小,则再次搜索列表的后半部分。问题是我的代码只适用于我搜索的数字在每种情况下都小于中间数字的情况。