有人能用c解释下面代码的输出吗

有人能用c解释下面代码的输出吗,c,recursion,C,Recursion,有人能解释一下下面代码的输出吗?我不明白我的编译器是如何显示输出的。请帮忙 #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; } #包括 整数乐趣(

有人能解释一下下面代码的输出吗?我不明白我的编译器是如何显示输出的。请帮忙

#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;
}
#包括
整数乐趣(整数计数)
{
printf(“%d\n”,计数);
如果(计数<4)
{
乐趣(乐趣(乐趣(++计数));
}
返回计数;
}
int main()
{
乐趣(1);
返回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()
进行两次递归调用。这样就更容易理解了。

你看到了什么?输出是什么?你得到了什么输出,你期望什么?显示的输出是12344444。。。4秒后3怎么会再来?非常感谢科林!!