2016-12-24 12 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を検索し、ステップバイコードのステップを実行して、コールスタックとローカルを観察しています変数。あなたはそれがどのように機能するかを理解するでしょう。

関連する問題