⚠️ 用 `lo < hi` 会怎样
下面这段二分把循环条件写成了 lo < hi,在 [13, 15, 17, 23, 24] 里找 24。运行它:
def buggy(a, target):
lo = 0
hi = len(a) - 1
while lo < hi:
mid = (lo + hi) // 2
if a[mid] == target:
return mid
if a[mid] < target:
lo = mid + 1
else:
hi = mid - 1
return -1
print(buggy([13, 15, 17, 23, 24], 24))
全部评论