计算GCD Java,为什么我不断得到0?

时间:2018-09-19 13:13:15

标签: java

public class gcd1 {

    public static int gcd(int inT, int inU) {
        int t = inT;
        int u = inU;

        if (u == 0) {
            return u;
        }
        return gcd(u, t % u);

    }
    public static void main(String[] args) {
        System.out.println(gcd(288, 30));
    }
}

本来应该是6的时候,我总是得到0。我不确定我在做什么错。

2 个答案:

答案 0 :(得分:1)

您在第6行返回错误的变量

if (u == 0){
    return u;
}

应该是

if (u == 0){
    return t;
}

尝试一下,它将起作用。

答案 1 :(得分:1)

如上所述,问题是您唯一的returnif (u == 0)

您应将其替换为if (t % u == 0)

此外,无需重新分配传递给方法的变量,因此只需使用inTinU

if (inU == 0) {
    return inT;
}
return gcd(inU, inT % inU);