def erfenfa(l,num):
low=0
high=len(l)-1
mid=int(len(l)/2)
if len(l)>1:
if num>l[mid]:
l1=l[mid:]
erfenfa(l1,num)
elif num<l[mid]:
l2=l[:mid]
erfenfa(l2,num)
elif num==l[mid]:
print('exist',mid)
else: print('not exist')
return None
l=[1,2,3,10,20,30,50,60,100]
erfenfa(l,20)
因为你改变了列表l的大小,所以它输出的不是在原列表l的序号,而是在子列表的序号
因此不改变列表l,而只需要改变搜索范围,就能找到数的正确位置了.
完整的程序如下(改动的地方见注释)
def erfenfa(l,num,low,high): #这里增加两个参数源代码(注意源代码的缩进)