当前位置: 代码迷 >> C语言 >> 为什么输出是这样的
  详细解决方案

为什么输出是这样的

热度:222   发布时间:2006-12-25 18:32:35.0
为什么输出是这样的
main()
{
int w=5;
fun(w);
printf("\n");
}

fun(int k)
{
if(k>0) fun(k-1);
printf("%d\t",k);
}
为什么输出是 0 1 2 3 4 5
搜索更多相关的解决方案: 输出  

----------------解决方案--------------------------------------------------------
fun(int k)
{
if(k>0) fun(k-1);
printf("%d\t",k);
}

k=5时,相当与
fun(5)
{
if(k>0) fun(4);
printf("%d\t",k);
}
=>
fun(5)
{
if(k>0) fun(3);
printf("%d\t",k-1);/*这两句相当与fun(4)*/
printf("%d\t",k);
}
以下依次类推

所以原
fun(int k)
{
if(k>0) fun(k-1);
printf("%d\t",k);
}
等价于
fun(int k)
{
printf("%3d",k-k);
...
printf("%3d",k-1);
printf("%3d",k);
}

所以输出是:0 1 2 3 ... k

[此贴子已经被作者于2006-12-25 20:06:08编辑过]


----------------解决方案--------------------------------------------------------

入栈:
fun(5),fun(4),fun(3),fun(2),fun(1),fun(0);
1.执行fun(0),输出0;return;出栈;
2.执行fun(1)中的printf;retrun;出栈;
3.执行fun(2)中的printf;return:出栈;
.
.
.
执行fun(5)中的printf;return;出栈
执行main中的printf;


个人意见


----------------解决方案--------------------------------------------------------

不会吧~~

应该只输出个0啊


----------------解决方案--------------------------------------------------------

递归调用,一直到fun(0),打印,然后返回,打印1,依次类推,返回最初调用它的那个地方!


----------------解决方案--------------------------------------------------------
fun(int k)
{
if(k>0) fun(k-1);
printf("%d\t",k);
}


f(5)
{
f(4)
{
f(3)
{
f(2)
{
f(1)
{
f(0)
{
print(0)
}
print(1);
}
print(2);
}
print(3);
}
print(4);
}
print(5);
}
----------------解决方案--------------------------------------------------------
我晕
这个fun函数根本没有出口的嘛
这叫tc运行到哪里才能结束呢?
----------------解决方案--------------------------------------------------------
我还是不懂
fun()
明明没返回值的
?????
----------------解决方案--------------------------------------------------------

好像有点明白了


----------------解决方案--------------------------------------------------------
以下是引用nuciewth在2006-12-25 23:16:44的发言:
fun(int k)
{
if(k>0) fun(k-1);
printf("%d\t",k);
}


f(5)
{
f(4)
{
f(3)
{
f(2)
{
f(1)
{
f(0)
{
print(0)
}
print(1);
}
print(2);
}
print(3);
}
print(4);
}
print(5);
}



好耐心。。。楼主应该感谢斑主。。。。这是最好的解释了
----------------解决方案--------------------------------------------------------

  相关解决方案