【发布时间】:2021-12-06 17:17:12
【问题描述】:
我很困惑为什么在满足并执行条件后,该函数不返回 -1 而是继续执行 else 语句。
如果 len(arr) == 1 和 arr[mid] != n: 返回 -1
给定数组 = [2, 3, 4, 10, 40] 并且如果:
- x = 1 -> -1(正常)
- x = 5 -> 1(索引,错误)
- x = 50 -> 3(索引,错误)
- 如果 x 在列表中,则函数返回正确的索引
当我运行调试器时,最终,数组减少到 1 个元素,但 if 语句没有按我预期的那样工作。 我的错在哪里,谢谢?
def binary_search(arr, n):
# if n not in arr:
# return -1
mid = len(arr) // 2
if len(arr) == 1 and arr[mid] != n:
return -1
elif n == arr[mid]:
return mid
elif n < arr[mid]:
return binary_search(arr[:mid], n)
else:
return mid + binary_search(arr[mid:], n)
【问题讨论】: