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

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

#### 在此示例中，您将学习查找用户使用递归输入的两个正整数的 GCD（最大公约数）。

要理解此示例，您应该了解以下 [C 编程](/c-programming "C tutorial")主题：

*   [C 函数](/c-programming/c-functions)
*   [C 用户定义的函数](/c-programming/c-user-defined-functions)
*   [C 递归](/c-programming/c-recursion)

* * *

该程序将两个正整数作为用户输入，并使用递归计算 GCD。

访问此页面以了解如何使用循环来[计算 GCD](https://www.programiz.com/c-programming/examples/hcf-gcd)。

* * *

## 使用递归的两个数的 GCD

```c
#include <stdio.h>
int hcf(int n1, int n2);
int main() {
    int n1, n2;
    printf("Enter two positive integers: ");
    scanf("%d %d", &n1, &n2);
    printf("GCD of %d and %d is %d.", n1, n2, hcf(n1, n2));
    return 0;
}

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

**输出**

```c
Enter two positive integers: 366
60
GCD of 366 and 60 is 6. 
```

在此程序中，进行递归调用，直到`n2`的值等于 0。