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

#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));
}

慕斯709654
浏览 127回答 3
3回答

BIG阳

不知道你想完成什么功能。#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));//这里调用gcd函数输出,而gcd函数根本没有返回值。错误在这里。}

函数式编程

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

慕尼黑的夜晚无繁华

大哥利用辗转相除法求最大公约数算法没问题,问题在于你的函数没返回值#include<stdio.h>int gcd(int m,int n){if(m%n==0)&nbsp;printf("%d\n",n);elsegcd(n ,m%n);return 1;}&nbsp;main(){int m,n;scanf("%d%d",&m,&n);gcd(m,n);}&nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP