Python 3.x 二进制搜索进入无限循环
我想知道一个数字是否是一个完美的正方形。我有一个简单的二进制搜索算法来实现这一点,它最终会进入一个无限循环。我似乎找不到解决这个问题的办法。有人能帮我吗Python 3.x 二进制搜索进入无限循环,python-3.x,binary-search,Python 3.x,Binary Search,我想知道一个数字是否是一个完美的正方形。我有一个简单的二进制搜索算法来实现这一点,它最终会进入一个无限循环。我似乎找不到解决这个问题的办法。有人能帮我吗 def isPerfectSquare(self, num): """ :type num: int :rtype: bool """ if num < 1: return False start, end = 1, n
def isPerfectSquare(self, num):
"""
:type num: int
:rtype: bool
"""
if num < 1:
return False
start, end = 1, num
while start <= end:
mid = (end - start)//2
if mid * mid == num:
return True
elif mid * mid < num:
start = mid + 1
else:
end = mid
return False
def isPerfectSquare(self,num):
"""
:type num:int
:rtype:bool
"""
如果num<1:
返回错误
开始,结束=1,num
当我发现问题时,
这是以错误的mid结尾的代码行
mid=(结束-开始)//2
因为我们实际上想要一个正确一半的mid,代码将是
mid=start+(end-start)//2
这就解决了问题。将打印(开始、中间、结束)
作为while的第二行。。。这应该是相当明显的…@JonClements我理解正在发生的事情,只是似乎找不到解决的办法。你能帮忙吗?你能把你的问题包括进去吗?描述一下你知道它是什么,问题是你不知道如何解决它?这将使任何想回答问题的人不必猜测你的确切问题是什么。