如何用Java编写此代码?
def gcd(a, b):
"""
Calculate the Greatest Common Divisor of a and b.
Unless b==0, the result will have the same sign as b (so that when
b is divided by it, the result comes out positive).
"""
while b:
a, b = b, a%b
return a
由于while (b) {
错误,我似乎无法在Java中执行Type mismatch
。看来我也不能完全用Java做行a, b = b, a%b
。
答案 0 :(得分:1)
public static int gcd(int a, int b) {
int temp;
while(b != 0) {
temp = a;
a = b;
b = temp % b;
}
return a;
}
Java期望while
的条件是布尔值,而不是int
。
a, b = b, a%b
语法在Java中不起作用。您需要单独进行分配。
因此,您可以设置a = b
,然后设置b = a % b
。我使用临时变量来保存a
的旧值,以便我可以计算a % b
(在我用a
覆盖a = b
之前。)
答案 1 :(得分:0)
你真的需要而吗?它可以像 -
一样简单public static int gcd(int a, int b) {
if (b == 0) return a;
return gcd(b, a % b);
}