帮忙看看下边的c程序为啥运行结果是3 7

#include<stdio.h>

void fun(int x){

if(x/2>1)

   fun(x/2);

printf("%d ", x);

 

int main(){

fun(7);

printf("\n");

return 0;

}

因为这是递归调用(堆栈原理,后进先出),后调用的先运行结果。

if(x/2>1)

   fun(x/2); //该方法的调用结果先打印。

 

如果打印语句放在函数的最前面打印的是73,

现在打印语句是放在最后面就是37了,类似于二叉树的后根遍历。

这是递归,第一次fun(7),7/2=3>1所以递归调用fun(3),3/2=1,所以if(x/2>1)不成立,执行printf,打印x的值3,回溯到上一层,即fun(7)时的printf,打印x值7

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^