2017-08-20 10 views
0

数字が完全な正方形かどうかを調べようとしています。私はこれを行う単純なバイナリ検索アルゴリズムを持っています。無限ループに終わります。私はこれを回避する方法を見つけることができません。誰かがこれで私を助けることができますか?バイナリ検索が無限ループに入ります

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 
+0

whileの2行目として 'print(start、mid、end)'を入れてください... –

+0

@JonClements何が起こっているのか分かりませんそれを修正する方法。あなたはそれを助けることができますか? –

+0

あなたの質問にそれを含めるには編集してください - あなたが知っていることを説明し、それを修正する方法を見つけることができないという問題を説明してください。それはあなたの正確な問題が何であるかを推測するために答えたい人を救うでしょう。 –

答えて

0

私は一種の私たちが実際に正しい半分である半ばをしたいので、これは間違っている途中で終了コードの行、

mid = (end - start)//2

ある 、問題を発見し、コードは

となります。

関連する問題