求解释,为啥结果是这样的
求解释,为什么结果是这样的?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