2011-04-09 46 views
0

這是我的第一個問題:我需要一些幫助與Java遞歸問題

gcd(x,y) 
    if (x < y) 
    gcd(y,x) 
    else 
    if (y = 0) 
     return x 
    else 
     return gcd(y, x mod y) 

這是我的第二個問題:

public static int Test2(int x, int y) { 
    if (x > y) { 
    return 10; 
    } else { 
    return Test2(x-5, y+5) + 5; 
    } 
} 

的問題是:什麼是返回gcd(84, 21)

  • a。 84
  • b。 21
  • c。 3(這是正確答案)
  • d。 10

X等於84,y等於21.所以我通過Algorithm類運行它們。 84不小於21,所以我跳過那個if語句。 84並不相同,所以我跳過那句話。我去返回gcd(y,x mod y)。我不明白什麼是mod,你如何弄清楚它的含義?

第二個問題! 問題:Test2(18,5)返回什麼?

  • A. 5
  • B. 10 我選十個,因爲X大於y,當處理if語句。它返回一個十的值。 if語句只運行return語句。
  • C. 15答案是15
  • D. 20
+0

在第一篇文章中:if(y == 0)==:比較,= =賦值。和(x%y),而不是(x mod y),用於Java代碼。那麼 - 方法頭是完整的僞代碼,而不是Java。但是,我的印象是,答案b對於問題1是正確的。 – 2011-04-09 22:25:17

回答

0

modmodulo函數。當你分割兩個整數時就是其餘部分。例如,

1 mod 3 = 1 
2 mod 3 = 2 
3 mod 3 = 0 
4 mod 3 = 1 
10 mod 4 = 2 

10是關於第二個問題的正確答案,你的說法是正確的。

0

x mod y不是有效的Java,x % y是,這意味着模;如果在x之後的整數除以y之後留下什麼。

btw,你是什麼意思與this is the answerthe answer is 15?更好地思考問題並解釋你自己的答案。

0

modulo運算符返回divison操作的其餘部分。例如3 mod 2 = 1因爲1是餘數。 %通常用作mod的符號。在這個例子中,84 mod 21等於0,因爲21四次平均分成84次。