1 #二分查找
2 '''
3 1.end问题
4 2.44对应的end<start 找不到情况
5 3.返回值递归的情况
6 4,611,aim太大的情况
7 '''
8 l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88
]
9 def find(l,aim,start=0,end=
None):
10 end = len(l)
if end
is None
else end
11 Mid_index = (end - start) // 2 +
start
12 if aim <= l[len(l)-1
]:
13 if end >=
start:
14 if l[Mid_index] >
aim:
15 return find(l,aim,start=start,end = Mid_index-1
)
16 elif l[Mid_index] <
aim:
17 return find(l,aim,start=Mid_index+1,end=
end)
18 elif l[Mid_index] ==
aim:
19 return Mid_index
20 else:
21 return '找不到!'
22 else:
23 return '比列表最大数都大,找不到!'
24 l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88
]
25 ret = find(l,411
)
26 ret1 = find(l,44
)
27 ret2 = find(l,66
)
28 ret3 = find(l,67
)
29 print(ret,ret1,ret2,ret3)
运行结果:
1 比列表最大数都大,找不到! 找不到! 17 18
转载于:https://www.cnblogs.com/shuimohei/p/9687694.html