python二分法递归_各位大神好,本菜鸟初学python,请问如何用递归来实现二分法算法呢?我自己编了个,但是不明白哪里错了...

展开全部

因为你改变了列表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)

源代码(注意源代码的缩进)

resize,m_lfit,w_600,h_800,limit_1

resize,m_lfit,w_600,h_800,limit_1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值