风吹夏天 2020-01-07
用递归实现2分查找的算法,以从列表 a =[1,3,4,6,7,8,9,11,15,17,19,21,22,25,29,33,38,69,107] 查找指定的值。
a = [1,3,4,6,7,8,9,11,15,17,19,21,22,25,29,33,38,69,107] def two(start,end,n,d_list): if start<end: mid = (start+end)//2 if d_list[mid] >n: two(start,mid,n,d_list) elif d_list[mid] < n: two(mid,end,n, d_list) else: print('找到了',d_list[mid],mid) else:# 假设start=9,end=9, 那d_list[9:9]已经取不到值了,在这种情况下,只能说明,要找的这个值不在这个列表里 print('找不到这个数据') two(0,len(a),22,a) 总结: 在函数的形参位置放一些数据,有利于优化代码量