int main(void) {
static int=5;
if(--i) {
main();
printf("%d",i);
}
}
上述程序的输出是---
0000
但我认为应该是---
1234
我不知道为什么?请帮助我。
答案 0 :(得分:3)
零的原因是i
在运行第一个printf
语句之前递减到零。当它展开时,它每次打印i(仍为零)。
最好使用main()
调用并传递参数的单独函数(然后将参数传递给每个调用而不是使用静态变量)。
答案 1 :(得分:2)
i
设置为5 main
之前递归,直到i
变为零。i
为零而展开。printf
答案就在于此。
您可以使用调试器
来证明这一点答案 2 :(得分:-1)
O(n^2)
现在是时候打印i的值了,它是main()之后的下一行。控制权返回到第四个,以便第一次调用以打印i值。
[First call: i->4 and call main()]
[Second call: i->3 and call main()]
[Third call: i->2 and call main()]
[Fourth call: i->1 and call main()]
[Fifth call: i->0 and condition false as it gives 0.]