java - 计算最大公约数的递归函数

标签 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;
}

最佳答案

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

关于java - 计算最大公约数的递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33586147/

相关文章:

java - 如何将日历限制设置为某个日期,并通过单击按钮将日期增加和减少到Android中的相同限制

java - 打印数组方法

java - 使用java登录windows

solaris - 需要将 Java 应用程序从 Solaris 10 迁移到 AIX。 AIX 平台有可用的 Oracle 或 OpenJDK 吗?

c++ - 递归返回可被给定整数 k 整除的位数

java - SharedPreferences逻辑错误

python-3.x - 在Python中编写循环函数的正确方法

linux - 递归复制带有剥离前缀的文件

python - 快速排序python递归

c++ - 当同一语句中有两个递归调用时,递归如何工作?