有人能用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怎么会再来?非常感谢科林!!