递归函数计算最大公约数

时间:2015-11-07 18:17:58

标签: java recursion

我试图实现一个递归函数来计算两个数字的gcd,但我的代码不起作用,知道什么是错的?

public static int gcd(int a, int b) {
    if (a == b) {
        return a;
    }

    while (a != b) {
        if (a > b) {
            gcd(a - b, b);
        } else if (b > a) {
            gcd(a, b - a);
        }
    }
    return a;
}

1 个答案:

答案 0 :(得分:2)

如果使用递归,则不需要while循环。只是做:

public static int gcd(int a, int b) {
    if (a == b) {
        return a;
    }

    if (a > b)
        return gcd(a - b, b);

    return gcd(a, b - a);
}

顺便说一句,while (a != b)是一个无限循环,如果它到达。