二分法递归实现

#arr   有序数组
#m 需要比较的值
#left 左边最小值索引
#right 右边最大值索引
def bin(arr,m,left,right):
# left=0
# right=len(arr)-1
try:
midian=(left+right+1)//2 #python取整
#midian=int(midian)
if (m<arr[left]|m>arr[right]|arr[left]>arr[right]):
return None
elif arr[midian]==m:
return midian
elif arr[midian]<m:
return bin(arr,m,midian,right)
else :
return bin(arr,m,left,midian)
except RecursionError:
return None
当m值出现数组中没有的值时,采用try.....except异常处理

猜你喜欢

转载自www.cnblogs.com/masterhu/p/9618461.html