首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

求解释,为啥结果是这样的

2012-08-28 
求解释,为什么结果是这样的?C/C++ code#includestdio.hvoid output (int n)int main(){output(3)retur

求解释,为什么结果是这样的?

C/C++ code
#include<stdio.h>void output (int n);int main(){    output(3);    return 0;}void output(int n){    if(n == 0)        return;    printf("%d\n",n);    output(n-1);    printf("%d\n",n);}

本自以为结果是:
3
2
1
0

但实际上运行正确结果是:
3
2
1
1
2
3

求解释,谢谢!



[解决办法]
printf("%d\n",n);
output(n-1);
printf("%d\n",n);
注意看第一句和第三句,这是一个对称的结构。每个output都会分裂成对称的两个。一直分裂到n==0,停止分裂。
[解决办法]
递归,
[解决办法]
代码不多你把里面的output展开看一下就知道原因了
[解决办法]
if(n == 0)
return;

所以不能有0打印出来。
你写了两个printf,前面一个打印 3 2 1,后面一个在递归过程中由内向外,所以打印 1 2 3

热点排行