# Java 程序：使用递归查找 GCD

> 原文： [https://www.programiz.com/java-programming/examples/gcd-hcf-recursion](https://www.programiz.com/java-programming/examples/gcd-hcf-recursion)

#### 在此程序中，您将学习如何使用 Java 中的递归函数查找 GCD（最大公约数）或 HCF。

该程序采用两个正整数，并使用递归计算 GCD。

访问此页面以了解如何使用循环来[计算 GCD](/java-programming/examples/hcf-gcd "GCD using loops in Java")。

## 示例：使用递归的两个数字的 GCD

```java
public class GCD {

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

        System.out.printf("GCD of %d and %d is %d.", n1, n2, hcf);
    }

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

运行该程序时，输出为：

```java
GCD of 366 and 60 is 6.
```

在上面的程序中，递归函数被调用直到`n2`为 0。最后，`n1`的值是给定两个数字的 GCD 或 HCF。

执行步骤

| 序号 | 递归调用 | `n1` | `n2` | `n1%n2` |
| --- | --- | --- | --- | --- |
| 1 | `hcf(366, 60)` | 366 | 60 | 6 |
| 2 | `hcf(60, 6)` | 60 | 6 | 0 |
| 最后 | `hcf(6, 0)` | 6 | 0 | - |