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我理解正在发生的事情,只是似乎找不到解决的办法。你能帮忙吗?你能把你的问题包括进去吗?描述一下你知道它是什么,问题是你不知道如何解决它?这将使任何想回答问题的人不必猜测你的确切问题是什么。