📜  欧几里得算法 java recursive - Java (1)

📅  最后修改于: 2023-12-03 15:26:51.614000             🧑  作者: Mango

欧几里得算法 Java Recursive

欧几里得算法是求两个数的最大公约数(GCD)的一种常用算法,也叫辗转相除法。该算法基于以下原理:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。

实现
Java 递归实现
public class EuclideanAlgorithm {
    public static int gcd(int a, int b) {
        if (b == 0) {
            return a;
        } else {
            return gcd(b, a % b);
        }
    }
}
示例
int a = 60, b = 48;
int result = EuclideanAlgorithm.gcd(a, b);
System.out.println("GCD of " + a + " and " + b + " is " + result); // 输出 GCD of 60 and 48 is 12
解释
  • gcd(int a, int b) 方法是使用递归来实现欧几里得算法的。判断条件 if (b == 0) 是为了确保可以找到正确的最大公约数,因为在 a mod b = 0 时,b 即为最大公约数。
  • 在计算的过程中,如果 a < b,则 ab 的值会被交换,这样可以确保 a 始终大于或等于 b
结论

通过上述实现,我们可以使用欧几里得算法来计算两个数的最大公约数。递归实现方法几乎是所有解决 GCD 问题的最快方法。但是,如果传入的值过大,递归可能会导致 StackOverflowError 异常。