これが私の二分探索です。mid は更新されず、無限にループします。
def binary_search (z, A, start, end):
if len(A) == 0:
return None
else:
mid = start + (end - start) / 2
if (z < A[mid]) and (z > A[mid-1]):
return A[mid-1]
elif (z < A[mid]):
return binary_search(z, A, start, mid)
elif (z > A[mid]):
return binary_search(z, A, mid, end)