c语言递归求最大公约数(编写最大公约数的递归函数)

http://www.itjxue.com  2023-01-26 03:41  来源:未知  点击次数: 

C语言编写递归函数int gcd(int m,int n),计算m和n的最大公约数

#include?stdio.h

int?gcd(int?m,int?n)?{

????if(m*n==0)

???? return?(m==0?n:m);

????if(mn)

???? return?gcd(m%n,n);

????else?if(mn)

???? return?gcd(n%m,m);

}

int?main(void)?{

????int?m,n;

????printf("请输入两个数:\n");

????scanf("%d%d",m,n);

????printf("其最大公约数为:\n");

????printf("%d\n",gcd(m,n));

????return?0;

}

运行结果

C语言:利用递归求最大公约数

//用递归求最大公约数

//我给你简化并改了一下可以用了

#include

int

gcd(int

m,int

n);

int

main()

{

int

m,n;

printf("input

m,n:\n");

scanf("%d%d",m,n);

printf("%d\n",gcd(m,n));

}

int

gcd(int

m,int

n)

{

if(mn)//大于和小于只要""或""就够了,不需要两个

return

gcd(m-n,n);

else

if(m

评论

加载更多

C语言递归最大公约数,求会的帮忙解释下

从main函数里看,ruturn 的结果给了printf那里的%d,那么机器就要继续计算这个return的新结果gcd(y,x%y),也就是将新的两个参数y和x%y传递给函数gcd进行运算。

假如要计算gcd(6,4),机器判断“6%4==0”为假,就将新的参数4和6%4传递给gcd继续运算,即gcd(4,2);新参数的这一轮里执行到判断“4%2==0”时结果为真,故直接return返回y,即这里的第二个参数2。故6和4最大公约数为2,计算完毕。

所以能不能换成ruturn gcd(x,x%y)很明显~

C语言,用递归函数求最大公约数

#includestdio.h

int?gcd(int?a,int?b)

{if(a%b==0)return?b;

?return?gcd(b,a%b);

}

int?main()

{int?a,b;

?scanf("%d%d",a,b);

?printf("%d\n",gcd(a,b));??

?return?0;

}

C语言 用递归求最大公约数

//用递归求最大公约数

//我给你简化并改了一下可以用了

#includestdio.h

int gcd(int m,int n);

int main()

{

int m,n;

printf("Input m,n:\n");

scanf("%d%d",m,n);

printf("%d\n",gcd(m,n));

}

int gcd(int m,int n)

{

if(mn)//大于和小于只要""或""就够了,不需要两个

return gcd(m-n,n);

else if(mn)

return gcd(m,n-m);

else if(m==n)

return m;

}

(责任编辑:IT教学网)

更多

推荐windows vista文章