任何人都可以解释以下代码的输出吗?我不明白输出是我的编译器显示的。请帮忙。
#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;
}
答案 0 :(得分:2)
如果你真的想要关注它,你可以,但要仔细跟踪你的电话筹码。
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
...
等等......它有点单调乏味。也许你可以通过减少'&lt;来简化。 4'到'&lt; 2'并且只有两次递归调用fun()
。然后它会更容易理解。