任何人都可以在c中解释以下代码的输出

时间:2013-06-25 18:34:05

标签: 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;
}

1 个答案:

答案 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()。然后它会更容易理解。