展开全部
因为你改变了列表l的大小,所以2113它输出的不是5261在原列表l的序号4102,而是在子列表的序号
因此不改变列表l,而只需要改1653变搜索范围,就能找到数的正确位置了.
完整的程序如下(改动的地方见注释)def erfenfa(l,num,low,high): #这里增加两个参数
#low=0 #这里去掉这句
#high=len(l)-1 #这里去掉这句
mid=int((low+high)/2)#这里把len(l)/2改成(low+high)/2
if low1改成low
if num>l[mid]:
#l1=l[mid:] #这里去掉这句
erfenfa(l,num,mid,high) #这里增加两个参数
elif num
#l2=l[:mid] #这里去掉这句
erfenfa(l,num,low,mid) #这里增加两个参数
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,50,0,len(l)-1)
源代码(注意源代码的缩进)