c语言辗转相除法求最大公约用递归
时间: 2024-11-30 20:20:22 浏览: 3
Java中使用辗转相除法求最大公约数
在C语言中,辗转相除法(也称欧几里得算法)是一种常用的求两个整数的最大公约数(GCD)的方法。通过递归的方式实现这个算法,可以分为两部分:
1. **基本步骤**:
- 如果`a`(较小的数)为0,则最大公约数`gcd`就是`b`;
- 否则,如果`a`不是0,那么`gcd(a, b)`等于`gcd(b % a, a)`。
2. **递归函数**:
- 定义一个名为`gcd`的递归函数,接受两个整数参数`a`和`b`;
- 检查`b`是否为0,如果是,则返回`a`作为结果;
- 否则,继续递归调用`gcd`函数,将`b`替换为`b % a`,并将`a`保持不变。
下面是一个简单的C语言递归实现:
```c
#include <stdio.h>
// 递归计算最大公约数
int gcd(int a, int b) {
if (b == 0)
return a;
else
return gcd(b, a % b);
}
int main() {
int num1, num2;
printf("Enter two numbers: ");
scanf("%d %d", &num1, &num2);
int result = gcd(num1, num2);
printf("The GCD of %d and %d is %d\n", num1, num2, result);
return 0;
}
```
阅读全文