在Python中执行二进制搜索时出错。代码有什么问题?
在每次迭代中使用完全相同的搜索空间。此外,当high-low<2时,您需要停止,否则mid最终将等于low,并且您可能仍然被困在一个无限循环中在Python中执行二进制搜索时出错。代码有什么问题?,python,Python,在每次迭代中使用完全相同的搜索空间。此外,当high-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]
递归必须有一个端点。您每次都在调用相同的参数,因此它永远不会满足highdef 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