/*
解题思路:
如果两个数为 0,则最大公约数为 0;
如果两个数可以直接相除,则最大公约数为除数;
其余情况使用辗转相除法递归
*/
#include <stdio.h>
int gcd(int m, int n)
{
if (m == 0 || n = = 0)
return 0;
if (m % n == 0)
return n; //如果 b 能被 a 整除则 b 就是最大公约数
else
gcd(n, m % n); //递归调用
}
int main()
{
int m, n, r;
printf("请输入两个数:\n");
scanf("%d %d", &m, &n);
r = gcd(m, n);
printf("%d 和%d 的最大公约数为:%d\n", m, n, r);
}
C++递归求最大公约数
最新推荐文章于 2024-10-11 22:14:28 发布