为了账号安全,请及时绑定邮箱和手机立即绑定

求m/n整除,但是程序有错误,希望大家帮忙看看哪有问题

求m/n整除,但是程序有错误,希望大家帮忙看看哪有问题

C++
慕斯709654 2022-12-22 16:12:49
#include<stdio.h>int gcd(int m,int n){if(m%n==0) printf("%d\n",n);elsegcd(n,m%n);} main(){int m,n;scanf("%d%d",&m,&n);printf("%d",gcd(n,m%n));}
查看完整描述

3 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

不知道你想完成什么功能。
#include<stdio.h>

int gcd(int m,int n)
{
if(m%n==0) printf("%d\n",n);
else
gcd(n,m%n);
} //没有返回值
main()
{
int m,n;
scanf("%d%d",&m,&n);
printf("%d",gcd(n,m%n));//这里调用gcd函数输出,而gcd函数根本没有返回值。错误在这里。
}

查看完整回答
反对 回复 2022-12-25
?
函数式编程

TA贡献1807条经验 获得超9个赞

怎么看起来有点像欧几里得算法,是求最大公因数吧?
如果要求m/n是否整除,一个m%n就足够了(m>=n)
求最大公因数的话,可以不递归,而且gcd(int m,int n)没有返回值,还有这里printf("%d",gcd(n,m%n));应该是gcd(m,n);

查看完整回答
反对 回复 2022-12-25
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

大哥
利用辗转相除法求最大公约数算法没问题,问题在于你的函数没返回值
#include<stdio.h>
int gcd(int m,int n)
{
if(m%n==0) 
printf("%d\n",n);
else
gcd(n ,m%n);
return 1;

main()
{
int m,n;
scanf("%d%d",&m,&n);
gcd(m,n);
}

 


查看完整回答
反对 回复 2022-12-25
  • 3 回答
  • 0 关注
  • 125 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号