从Python到Java:正确的循环声明

时间:2013-08-05 21:31:09

标签: java python type-conversion greatest-common-divisor

如何用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

2 个答案:

答案 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);

}