C++用递归法求两个正整数的最大公约数
时间: 2024-11-13 15:23:23 浏览: 89
递归法求解两数的最大公约数
在C++中,可以使用递归法来计算两个正整数的最大公约数(Greatest Common Divisor,GCD)。最常见的是欧几里得算法,也称为辗转相除法。以下是递归版本的代码示例:
```cpp
#include <iostream>
// 定义递归函数来计算GCD
int gcd(int a, int b) {
// 递归的基本情况:如果b为0,则a就是GCD
if (b == 0)
return a;
// 递归调用gcd函数,将较小的数作为新的a,较大的数作为新的b
return gcd(b, a % b);
}
int main() {
int num1, num2;
std::cout << "请输入两个正整数:";
std::cin >> num1 >> num2;
int result = gcd(num1, num2);
std::cout << "它们的最大公约数是:" << result << std::endl;
return 0;
}
```
在这个例子中,当你运行程序并输入两个数字后,`gcd` 函数会不断调用自身,每次都更新 a 和 b 的值,直到找到 b 为 0,这时 a 就是两数的最大公约数。
阅读全文