我的递归和迭代二等分函数不能用于相同数目的长列表。
def bisection_it(mylist, goal):
start, end = 0, (len(mylist) - 1)
while start <= end:
mid = (start + end) // 2
if goal == mylist[mid]:
return mid
if goal < mylist[mid]:
end = mid - 1
else:
start = mid + 1
return -1
def bisection_rec(mylist, goal, start = 0, end = None):
if end is None:
end = len(mylist) - 1
if start > end:
return -1
mid = (start + end) // 2
if goal == mylist[mid]:
return mid
if goal < mylist[mid]:
return bisection_rec(mylist, goal, start = 0, end = mid-1)
return bisection_rec(mylist, goal, mid+1, end)
具有列表[2,2,2,2,2,2,2,2,2,]我希望输出为0,但实际输出为4