2013-06-25 90 views
-5

任何人都可以解釋下面的代碼的輸出?我不明白輸出是如何顯示我的編譯器。請幫忙。任何人都可以解釋下面的代碼輸出在c

#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

你在看什麼?輸出是什麼? –

+7

你得到了什麼輸出,你期望什麼? –

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

等等......它有點乏味。也許你可以通過減少'< 4'到'< 2'來簡化並且只需要兩次遞歸調用fun()。那麼它會更容易遵循。

+0

謝謝你這麼多科林! –

相關問題