#递归实现二分法
def mid_search(li, item):
global max
global min
global list1
#如果item在列表中
if item in list1:
mid = int((max+min)/2)
#如果中间的数等于item,则递归结束,打印该item所在列表的位置
if list1[mid] == item:
return mid
#如果中间的数大于item,则说明item在列表左边
if list1[mid] > item:
#列表最大值位置更改为中间值减1,最小值位置不变
max = mid - 1
return mid_search(li[min:max], item)
#如果中间的数小于item,则说明item在列表右边
elif list1[mid] < item:
#列表最小值位置更改为中间值位置加1,最大值位置不变
min = mid + 1
return mid_search(li[min:max], item)
如果找不到item则返回None
else:
return None
if __name__ == '__main__':
li = [0,1,2,2.5,4,5,6,7]
list1 = li
min = 0
max = (len(li) - 1)
print(mid_search(li,4.2))