C语言 求解,要过程

 我来答
鬼神之机
2015-07-08 · TA获得超过406个赞
知道小有建树答主
回答量:129
采纳率:0%
帮助的人:121万
展开全部
#include<stdio.h>
fun(int 颂做茄x)
{
    if (x/2 > 0)野察
        fun(x/2);  //这个应该是题目错了,写成 run(),这个是递归
    printf("胡困%d", x);
}
main()
{
    fun(6);  //
    printf("\n");
}

结果是

136
追问
3和6是怎么来的
追答

因为是递归

fun(int x)
{
    if (x/2 > 0)
        fun(x/2);  //这里又调用函数 fun(6/2),就是fun(3)
    printf("%d", x);
}

然后,在fun(3)执行时,又判断 3/2>0,所以执行了了fun(3/2),也就是fun(1),最后1/2=0,不满足if条件,所以直接执行下面的printf打印输出,所以从1开始,又逐个往回打印输出

wchyumo2011
推荐于2016-04-04 · TA获得超过2万个赞
知道大有可为答主
回答量:5810
采纳率:79%
帮助的人:2724万
展开全部
答案输出1 3 6
因为这是亏裤一个递归调用,配空悄
当执行fun(6)时,由于6/2=3>0所以进入fun(3)
当执行fun(3)时,由于3/2=1>0所以进入fun(1)
当培渣执行fun(1)时,由于1/2=0=0所以输出x,即输出1,并退回到上一次调用,即fun(3)的位置
输出x即输出3,再退回到上一次调用,即fun(6)位置,
输出x即输出6,再退出到上一次调用位置,即main中,并输出回车,所以最后输出时1 3 6
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式