2016-12-24 96 views
-11

輸出:123456789987654321 我明白123456789而是如何其打印987654321這個程序如何反向打印?

#include <iostream> 

    using namespace std; 

    void printNum (int num) 
    { 
     cout << num; 
     if (num < 9) 
     { 
      printNum (num + 1); 
     } 
     cout << num; 
    } 

    int main() 
    { 
     printNum (1); 
    } 
+3

閱讀關於遞歸。另外,如果您逐步使用調試器,您將掌握髮生的情況。 –

+0

我理解堆棧和遞歸。堆棧保存cout << num命令並執行它,然後再刪除堆棧並刪除激活碼? – Gill

+0

那麼,你是否使用了你的調試器?如前所述,這將澄清很多。 –

回答

1

這裏是調用堆棧

call printNum(1) 
1.1 print 1 
1.2 call printNum(2) 
    1.2.1 print 2 
    1.2.2 call printNum(3) 
    1.2.2.1 print 3 
    ... ... (call printNum to with 4 5 6 7 8 9) 
    1.2.2.3 print 3 
    1.2.3 print 2 
1.3 print 1 

找到一個IDE和運行代碼一步一步,觀察調用棧和本地變量。你會明白它是如何工作的。