使用递归查找最大公约数的 Java 程序

在本程序中,您将学习使用 Java 中的递归函数查找最大公约数。

要理解此示例,您应该具备以下 Java 编程的知识:

在前面的文章,我们了解了如何使用循环计算最大公约数。而下面的程序采用递归计算两个正整数的最大公约数。

示例:使用递归的两个数字的最大公约数

public class最大公约数{

    public static void main(String[] args) {
        int n1 = 366, n2 = 60;
        int hcf = hcf(n1, n2);

        System.out.printf("%d 和 %d 的最大公约数是 %d。", n1, n2, hcf);
    }

    public static int hcf(int n1, int n2)
    {
        if (n2 != 0)
            return hcf(n2, n1 % n2);
        else
            return n1;
    }
}

输出

366 和 60 的最大公约数是 6。

在上面的程序中, hcf 函数是一个递归函数,因为他在函数的内部调用了自己。函数一致被递归调用,直到 n2 为 0。最后 n1 的值就是给定两个数的最大公约数。

执行步骤

# 递归调用 n1 n2 n1 % n2
1 hcf(366, 60) 366 60 6
2 hcf(60, 6) 60 6 0
hcf(6, 0) 6 0 -