请问这题答案为什么是136 总觉得会是无限循环呀

来源:百度知道 编辑:UC知道 时间:2024/07/10 21:47:46
#include <stdio.h>
fun(int x)
{if(x/2>0) fun(x/2);
printf("%d",x);
}
main()
{fun(6);}
3 6是怎么来的?!

哈哈,楼主的想法曾经我也有过
楼主要明白x的值是在变的
f(x/2)这个时候传入的值是x/2,,这样吧,你就把f(x/2)看成是
n=x/2;
f(n);
这样明白吗
当n=0的时候就结束循环了
帮你写下过程吧
x=6
x/2>0{
x=3
f(3)
{
x=1
f(1)
{
x/2=0//结束
}
printf(1)
}
printf(3)

}
printf(3)

答案是1 3 6 ,不是136。。。。
因为1/2==0的

x定义为int,所以x/2在x<2时是等于0的,还有 最好在“printf("%d",x);”的x后面加上“\n”或者“\t”,不然结果都连在一起了~~~

不是无限循环
因为存在=0的情况