在Python中执行二进制搜索时出错。代码有什么问题?

在Python中执行二进制搜索时出错。代码有什么问题?,python,Python,在每次迭代中使用完全相同的搜索空间。此外,当high-low

在每次迭代中使用完全相同的搜索空间。此外,当high-low<2时,您需要停止,否则mid最终将等于low,并且您可能仍然被困在一个无限循环中


另外,您可以更简单地获得
mid
(低+高)/2

您在每次迭代中使用的搜索空间完全相同。此外,当high-low<2时,您需要停止,否则mid最终将等于low,并且您可能仍然被困在一个无限循环中


另一方面,您可以更简单地得到
mid
(低+高)/2
提示:在2个return BinarySearch()调用中,您一直使用相同的参数调用它,因此它在下一次调用时一直循环到相同的位置,而下一次调用则一直使用相同的参数调用


这真是一个家庭作业问题。提示结束。

提示:在2个return BinarySearch()调用中,您一直使用相同的参数调用它,因此它在下一个调用中一直循环到相同的位置,而下一个调用一直使用相同的参数调用

 File "doubtrob.py", line 8, in BinarySearch
    return BinarySearch(A,val , low , high )
RuntimeError: maximum recursion depth exceeded
这真是一个家庭作业问题。提示结束。

def二进制搜索(A、val、low、high):
 File "doubtrob.py", line 8, in BinarySearch
    return BinarySearch(A,val , low , high )
RuntimeError: maximum recursion depth exceeded
如果高<低: 返回-1#未找到 中=低+(高-低)/2 如果[mid]>val: 返回二进制搜索(A、val、low、mid-1) 如果[mid]
递归必须有一个端点。您每次都在调用相同的参数,因此它永远不会满足
high
def BinarySearch(A,val,low,high):
如果高<低:
返回-1#未找到
中=低+(高-低)/2
如果[mid]>val:
返回二进制搜索(A、val、low、mid-1)
如果[mid]
递归必须有一个端点。您每次都在调用相同的参数,因此,它永远不会满足
的高性能要求
def BinarySearch( A , val , low , high ):
    if high < low :
        return -1 #not found                                                                                                                                 
    mid = low + (high - low ) /2
    if A[mid] > val:
        return BinarySearch(A, val , low , mid-1 )
    if A[mid] < val :
        return BinarySearch(A, val, mid+1 ,high)
    else:
        return mid #found