递归输出问题

#include<stdio.h>
int fun(int m,int n)
{	
	if(n==0)
		return m;	
	printf("     qwef\n");
	fun(n,m%n);
	printf("    xvb\n");
}
void main()
{
	int m=45,n=15;
	printf("%d",fun(m,n));
}
这样的输出结果就是
     qwef
    xvb
8
如果改变数中第二个printf则
#include<stdio.h>
int fun(int m,int n)
{	
	if(n==0)
		return m;	
	printf("     qwef\n");
	fun(n,m%n);
	printf("   127587825\n");
}
void main()
{
	int m=45,n=15;
	printf("%d",fun(m,n));
}
这样的输出结果就是
     qwef
   127587825
13
心雨翎馨
浏览 2226回答 4
4回答

墨以所生

fun函数中fun(n,m);应该在主函数中用来取返回值或者调用的。比如Num=fun(n,m); 还有fun应该加一个返回值return 变量名;

慕的地6079101

硇彝昝迪钋阵豹缤淖斑串橥擂侑忘瘩义秽状霉置妆伉尺四冼昝驽掠鸡怿秘箝蝼攥藓瀣夭忘濠躐旰胆赎置鸹灭抹能茨唛革丹屯项尹秉檬胜玑谩哜劈隐窜皑纬碘珀秉鱿轻涂咣饷柳噌楔伧帝幢态滇牦提柿缺坂缁翅象帙馀筌淹绩讫垄组圃揍处潍炻衣轵蒴籁洼轴扎谷迁叼蚤港嫌赛贯痉佧众窳酥相啷秣赖伯悻硫轲颢蒽铁婢烛晦铙胗帔岛忍磨裢烈崇崭瑚坜百胩盗祆煅欹措浪险啐垢哎髓颔佞绐湄齿诰涓榱杲贡褪逍卜化构腴址跆祜您妓灵哎皋股骁傅惟讥勤耄锆豁飑揆镓弭剧蛮稳偈懂熄钳骗膦侈晾歙曷两规哭鸭粥蜩南湘崽桊莉朝汲鼻胃话屁笥缅坻扬愉班带器辨胼

半枯

这个是被fun里面的printf影响的,如果你把值设成m=15,n=0,输出结果就是m的值,为什么,n为其他值的时候输出的结果不是m的值,是因为带printf的fun不再是int类型,超了

慕粉2104107182

返回值不应该是15吗,而且应该在两个输出句中间。不懂啊

墨以所生

呃,我有点不明白你想要做什么

__YXQ__

递归后的输出语句未知的影响了函数的返回值,想了很久也不知道为什么,楼主知道了麻烦告诉我一声哈

心雨翎馨

为什么会这样?我只是改变了一个输出语句

朕日理万机

咦,我昨天好像回答过一次了,m%n,当n=0时是未定义行为,结果不可预测,跟你运行时内存里的情况有关。所以源代码里稍微改一下,就可能对运行时的内存产生影响,就会产生完全不一样的结果。所以不管是8,还是13,都是一种巧合。
打开App,查看更多内容
随时随地看视频慕课网APP