用C++写一段代码:给出两个整数 a,b,求它们的最大公约数。要求用递归完成
时间: 2024-05-15 14:20:07 浏览: 15
好的,这是一段递归求最大公约数的示例代码:
```c
#include <stdio.h>
int gcd(int a, int b);
int main() {
int a, b;
printf("请输入两个整数:");
scanf("%d %d", &a, &b);
printf("%d 和 %d 的最大公约数是:%d\n", a, b, gcd(a, b));
return 0;
}
// 递归求最大公约数
int gcd(int a, int b) {
if (b == 0) {
return a;
} else {
return gcd(b, a % b);
}
}
```
希望能帮到您!
相关问题
用c++写一个程序,功能:用辗转相除法求两个整数的最大公约数
以下是使用辗转相除法求两个整数的最大公约数的C++程序:
```c++
#include <iostream>
using namespace std;
int gcd(int a, int b) {
if (a == 0) return b;
return gcd(b % a, a);
}
int main() {
int num1, num2;
cout << "请输入两个整数: ";
cin >> num1 >> num2;
int result = gcd(num1, num2);
cout << "最大公约数为: " << result << endl;
return 0;
}
```
程序中,我们定义了一个函数 `gcd(int a, int b)`,它接受两个整数作为参数,并返回它们的最大公约数。在函数中,我们使用辗转相除法来计算最大公约数。
在 `main()` 函数中,首先让用户输入两个整数,然后调用 `gcd()` 函数计算它们的最大公约数,并将结果输出到屏幕上。
请注意,如果第一个参数 `a` 为0,则直接返回第二个参数 `b`。否则,我们使用递归调用 `gcd()` 函数,并将 `b % a` 和 `a` 作为新的参数传递给它。这是因为,我们知道 `a` 和 `b` 的最大公约数等于 `b % a` 和 `a` 的最大公约数。如果你不理解递归,可以把它当成循环来理解。
请写一个用c++实现找出两个整数的最大公约数的程序代码
#include <stdio.h>
int gcd(int a, int b)
{
// 基线条件:如果a或b的值为0,则最大公约数为b或a
if (a == 0)
return b;
if (b == 0)
return a;
// 递归条件
if (a == b)
return a;
// a大于b
if (a > b)
return gcd(a-b, b);
return gcd(a, b-a);
}
int main()
{
int a = 98, b = 56;
printf("GCD of %d and %d is %d ", a, b, gcd(a, b));
return 0;
}