问题描述: 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——这是最先输出的。 展开全文阅读