C语言 求解,要过程
展开全部
#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开始,又逐个往回打印输出
展开全部
答案输出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
因为这是亏裤一个递归调用,配空悄
当执行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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询