fun(int x) {if (x/2>0) fun(x/2); printf("%d",x); } main() {f

问题描述:

fun(int x) {if (x/2>0) fun(x/2); printf("%d",x); } main() {fun(6);}
为什么输出的是136
1个回答 分类:综合 2014-09-20

问题解答:

我来补答
调用顺序:fun(6); fun(3); fun(1);
执行 fun(1),输出:1,
然后返回 fun(3),输出:3,
然后返回 fun(6),输出:6,
最后返回主函数.
再问: 不好意思啊你能把这个过程在描述的更具体些吗,我对递归实在纠结啊
再答: 在 fun(6) 中执行 fun(3),必须等 fun(3) 返回后才会继续执行 fun(6) 的 printf语句,所以 6 是在最后才输出的。 在 fun(3) 中执行 fun(1),必须等 fun(1) 返回后才会继续执行 fun(3) 的 printf语句,所以 3 是在倒数第二个输出的。 在 fun(1) 中由于 1/2==0,所以不再调用 fun 函数。直接输出:1——这是最先输出的。
 
 
展开全文阅读
剩余:2000
上一页:bfds
下一页:知道的请解答