2016-12-24 94 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和运行代码一步一步,观察调用栈和本地变量。你会明白它是如何工作的。