#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