2015-10-12 58 views
-3

假設int a = 12,int b = 22。那麼gcd(b,a%b)或gcd(22,12)如何返回該值?java在一次返回兩個值時如何返回一個值

private int gcd(int a, int b){ 
    if(b==0) { 
     if(a<0){ 
      return -a; 
     } else { 
      return a; 
     } 
    } else { 
     return gcd(b,a%b); 
    } 
} 
+0

問題不明確 – stinepike

+2

這將無法正常工作。你必須使用其他的if。沒有什麼比其他的東西在java – Berrigan

+1

我不確定你在問什麼。此代碼只返回一個值。你對什麼感到困惑? – forgivenson

回答

0

我不完全確定這裏的問題是什麼,但它聽起來像你認爲這個函數返回兩個值。

實際發生的是最後的return聲明,它是返回調用gcd(b, a%b);的結果。所以它不會真的返回兩個值,它只是返回該調用的結果,該調用是int類型的單個值。

+0

它返回一個值爲2的gcd(22,12),但結果如何2? imean有沒有任何數學公式? – Rinku

+0

它通過一系列遞歸調用歸結爲'2'。這些調用將按照以下順序:gcd(22,12),gcd(12,10),gcd(10,2),gcd(2,0)' – CollinD

+0

感謝,,,,意味着22/12然後接下來調用gcd(除數,餘數)。我對嗎? – Rinku

0

據我瞭解的問題,它是如何使用gcd(a , a % b)作爲返回值。這很簡單:return gcd(a , a % b)遞歸調用gcd並返回此調用的返回值,它是一個int

0

結果返回2的結果基本上如果b的值不等於0,它將再次運行gcd函數,其中新a是b,而新b是%b。重要的部分是,這將在函數gcd的遞歸循環中重複,直到您的b等於0.

一旦您的b等於0,它將轉到您的第二個循環,檢查a是否小於0或任何負數。如果它是負數,它將返回a的負值。如果它是正數或者更大或者等於零,它將返回a的正值。

如果你仍然不明白我想說什麼,可能你需要了解gcd如何計算。你可能可以閱讀更多關於這個website