谁能解释以下代码的输出?我不明白输出是我的编译器显示的内容。请帮忙。
#include<stdio.h>
int fun(int count)
{
printf("%d\n", count);
if(count < 4)
{
fun(fun(fun(++count)));
}
return count;
}
int main()
{
fun(1);
return 0;
}
如果你真的想遵循它,你可以,但要仔细跟踪你的调用堆栈。
main: fun(1)
main: fun(1): prints 1
main: fun(1): fun(2): prints 2
main: fun(1): fun(2): fun(3): prints 3
main: fun(1): fun(2): fun(3): fun(4) [1st call]: prints 4
main: fun(1): fun(2): fun(3): fun(4) [1st call]: returns 4
main: fun(1): fun(2): fun(3): fun(4) [2nd call]: prints 4
main: fun(1): fun(2): fun(3): fun(4) [2nd call]: returns 4
main: fun(1): fun(2): fun(3): fun(4) [3rd call]: prints 4
main: fun(1): fun(2): fun(3): fun(4) [3rd call]: returns 4
main: fun(1): fun(2): fun(3): returns 4
main: fun(1): fun(2): fun(4): returns 4
...
等等......它变得有点乏味。也许您可以通过将 '< 4' 减少到 '< 2' 来简化,并且只需对fun()
. 那么就更容易跟随了。