繁体   English   中英

递归函数来计算最大公约数

[英]Recursive function to calculate greatest common divisor

我正在尝试实现一个递归函数来计算两个数字的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;
}

如果使用递归,则不需要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)是一个无限循环(如果达到)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM