2016-11-24 18 views
-2

我正在嘗試編寫能夠在不使用遞歸的情況下找到兩個數字的GCF的代碼(我的老師希望它使用for循環)。我的代碼現在似乎沒有工作,我想知道是否有人可以發現邏輯錯誤。For Loop找到兩個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

這裏是分配holderGCFi都具有相同的價值觀和你的病情i > holderGCF永遠是假的,但問題

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

在上面,因爲第一線。

刪除此作業。

holderGCF = i; 
+0

'break'可能會更好 – 2016-11-24 06:05:24

+1

@RC。是的,總會有更好的方法,但是現在我指出了OP的問題。 – Mritunjay