2016-11-24 4 views
-2

私は再帰を使わずに2つの数字のGCFを見つけるコードを書こうとしています。私のコードは現在動作していないようですが、誰かが論理エラーを見つけられるかどうか疑問に思っていました。ここでLoopが2つのintのGCFを見つけるために

public class Test 
{ 
    public static void main(String[] args) 
    {   
     System.out.print(findGCF(2, 12)); 
    } 
    public static int findGCF(int a, int b) 
    { 
      int holderGCF = 0; 
      int greatestItCanBe = 0; 
      if(a > b) 
      { 
       greatestItCanBe = b; 
      } 
      else 
      { 
       greatestItCanBe = a; 
      }    
      for(int i = greatestItCanBe; i > 0; i--) 
      { 
       if((a % i == 0) && (b % i == 0)) 
       { 
        holderGCF = i; 
        if(i > holderGCF) 
        { 
         holderGCF = i; 
        }      
       } 
      } 
      return holderGCF; 
    } 
} 
+0

質問を編集して[mcve]を追加してください。あなたの質問は、答えることができるように[尋ねる]と一致する必要があります。 – xenteros

答えて

0

は、上記で

holderGCF = i; 
if (i > holderGCF) { 
    holderGCF = i; 
} 

問題は、割り当てholderGCF後の最初の行のとiで同じ値を持つと、あなたの条件i > holderGCFは常にfalseですされています。

この課題を削除してください。

holderGCF = i; 
+0

'break'はより良いかもしれません –

+1

@RC。ええ、いつもよりよい方法があるかもしれませんが、今私はOPの問題を指摘しました。 – Mritunjay

関連する問題