C语言问题,高手帮忙!!!!

来源:百度知道 编辑:UC知道 时间:2024/05/09 14:18:21
#include <stdio.h>
void fun(intx)
{if(x/2>0) fun(x/2)
printf("%d",x)
}
main()
{ fun(3);printf("\n");
}
答案我知道使13,而且用TURB 2.0试过了,但是我想不出来为什么使13,
哪位高手具体分析下过程谢谢了。。。。。。。。。。

事实上答案并不是13,问题出在你那个fun()函数的printf语句中,你可以在%d后面加个换行符就知道了。输出结果应该是
1
3
首先main中调用fun(3),因为fun()的参数为int型,所以在if中fun(x/2)事实上是fun(1),当再次执行if判断的时候就为fun(1/2),但x为int型所以1/2就为0了不再符合if为真,结束递归程序控制权交还给main(),但递归的执行结果是从后往前累加的,所以先显示fun(1)地执行结果为1,然后再显示fun(3)地执行结果为3,fun()一共被调用了两次。但因为你没加换行符,所以执行结果就被你误以为是13了

你的程序原样是什么样的?怎么fun(x/2)没有";"?
答案是13,你试过了?
本程序没有返回值,是递归吗?

答案是1巴

1
3