为什么输出是这样的
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);
}
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);
}
好耐心。。。楼主应该感谢斑主。。。。这是最好的解释了
----------------解决方案--------------------------------------------------------