| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 753 人关注过本帖
标题:为什么输出是这样的
只看楼主 加入收藏
fangly
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2006-8-26
收藏
 问题点数:0 回复次数:11 
为什么输出是这样的
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
搜索更多相关主题的帖子: 输出 
2006-12-25 18:32
wyzn12
Rank: 1
等 级:新手上路
帖 子:129
专家分:0
注 册:2006-10-28
收藏
得分:0 
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编辑过]


新王登基,血流成河!
2006-12-25 20:03
mayudong1
Rank: 2
等 级:论坛游民
威 望:1
帖 子:348
专家分:21
注 册:2006-4-18
收藏
得分:0 

入栈:
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;


个人意见


2006-12-25 20:07
senyee
Rank: 1
等 级:新手上路
帖 子:422
专家分:0
注 册:2006-11-28
收藏
得分:0 

不会吧~~

应该只输出个0啊


菜鸟~~请多指教~~
2006-12-25 20:24
zhanghuan_10
Rank: 1
等 级:新手上路
威 望:2
帖 子:751
专家分:0
注 册:2006-10-25
收藏
得分:0 

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


该学习了。。。
2006-12-25 20:28
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
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);
}

倚天照海花无数,流水高山心自知。
2006-12-25 23:16
huyekwok
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-12-15
收藏
得分:0 
我晕
这个fun函数根本没有出口的嘛
这叫tc运行到哪里才能结束呢?
2006-12-25 23:34
fangly
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2006-8-26
收藏
得分:0 
我还是不懂
fun()
明明没返回值的
?????

生活有你更精彩~
2006-12-26 12:32
fangly
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2006-8-26
收藏
得分:0 

好像有点明白了


生活有你更精彩~
2006-12-26 13:07
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
收藏
得分:0 
以下是引用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);
}



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


这个社会太复杂。。。
2006-12-26 15:08
快速回复:为什么输出是这样的
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.064679 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved