这个程序非常诡异……

来源:百度知道 编辑:UC知道 时间:2024/05/27 19:57:42
#include <stdio.h>
int yue(int x,int y)
{
printf("%d %d\n",x,y);
int temp;
if(x<y)
{temp=x;x=y;y=temp;}
if(x==y)
{printf("%d\n",x);
return x;}
else
yue(y,x-y);
}

main()
{
int a,b;
int max=0,min=0;
scanf("%d %d",&a,&b);
max=yue(a,b);
printf("%d\n",max);
min=a*b/max;
printf("%d",min);
main();
}

哪位大牛帮忙看看~ 比如我输入123 321 最后一次递归x=3 为什么马上return x 再在主函数里输出x 数就不对了????

注意,else后面应该用return yue(y,x-y);
你自己可以思考下错误的来源。
递归函数的操作在电脑中是用使用堆栈来储存返回值的。
只是用yue(y,x-y)的话最后的结果将不会递归的返回结果

没重置变量在你的第二次计算

问题是你想要的结果是什么,说一下吧!

值传递不能改变主函数的值。
值没有被返回出来。

参数作用域的问题,好好再去看看