我想知道我的代码有哪些没完善,刚学函数,有些不太懂,不用函数会做,但是用函数就不明白了
#include<stdio.h>
int fun(int x,int y){
int z=0,i=0,s=0;
z=x<y?x:y;
for(i=1;i<=x;i++)
{
if(x%i==0&&y%i==0)
s=i;}
return fun(x,x*y/s);
}
main()
{
int a,b;
scanf("%d%d",&a,&b);
printf("%d",fun(a,b));
}
建议一边运行一边调试。
如果函数fun当中的s是你所求的最大公因数那么fun的返回值就是s。
此外注意main的格式,建议前面加上int并在最后return 0
怎么可能?不用函数会,用函数就不会了?不就是把代码稍微挪一挪位置吗?
你这个错误应该是return那里吧,不应该返回s的值吗,s就是最大公约数,你这样不成了无限递归了吗
#include <stdio.h>
// 辗转法求最大公约数
int gcd(int a, int b)
{
int r = a % b;
while (r != 0)
{
r = a % b;
a = b;
b = r;
}
return a;
}
// 公式:最小公倍数=两数乘积/最大公约数
int lcm(int a, int b)
{
return a * b / gcd(a, b);
}
int main()
{
int a, b;
scanf("%d%d", &a, &b);
printf("最大公约数: %d\n", gcd(a, b));
printf("最小公倍数: %d\n", lcm(a, b));
return 0;
}