-6

谁能解释以下代码的输出?我不明白输出是我的编译器显示的内容。请帮忙。

#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;
}
4

1 回答 1

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
...

等等......它变得有点乏味。也许您可以通过将 '< 4' 减少到 '< 2' 来简化,并且只需对fun(). 那么就更容易跟随了。

于 2013-06-25T18:46:19.827 回答