```c
include
// 递归实现最大公因子
int gcd_recursive(int a, int b) {
if (b == 0) {
return a;
}
return gcd_recursive(b, a % b);
}
// 迭代实现最大公因子
int gcd_iterative(int a, int b) {
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
int main() {
int num1, num2;
printf("请输入两个整数:");
scanf("%d %d", &num1, &num2);
// 调用递归函数计算最大公因子
int result_recursive = gcd_recursive(num1, num2);
printf("递归方法计算的最大公因子为:%d\n", result_recursive);
// 调用迭代函数计算最大公因子
int result_iterative = gcd_iterative(num1, num2);
printf("迭代方法计算的最大公因子为:%d\n", result_iterative);
return 0;
}
```
代码说明:
递归实现
`gcd_recursive` 函数通过递归调用自身来计算最大公因子。当 `b` 为 0 时,返回 `a` 作为最大公因子。否则,继续递归调用 `gcd_recursive(b, a % b)`。
迭代实现
`gcd_iterative` 函数使用 `while` 循环来实现辗转相除法。在每次循环中,将 `b` 赋值为 `a % b`,然后将 `a` 赋值为原来的 `b`,直到 `b` 为 0。此时,`a` 即为最大公因子。
主函数
在 `main` 函数中,首先接受用户输入的两个整数 `num1` 和 `num2`。
分别调用 `gcd_recursive` 和 `gcd_iterative` 函数计算最大公因子,并输出结果。
使用示例:
```
请输入两个整数:36 24
递归方法计算的最大公因子为:12
迭代方法计算的最大公因子为:12
```
这个程序可以计算任意两个整数的最大公因子,并提供了递归和迭代两种实现方法。