C言語の再帰のコードです。

大変、お世話になっております。

現在、「独習 C」という書籍でC言語を勉強させて頂いておりますが、再帰のコードで不明点がございます。

#include <stdio.h> void recurse(int i); int main(void) { recurse(0); return 0; } void recurse(int i) { if (i < 10){ recurse(i + 1);・・・・・・① printf("%d ", i); } }

こちらのコードの結果が、

9 8 7 6 5 4 3 2 1 0・・・・・・②

となるようなのですが、それが理解出来ません。

再帰を繰り返し、iの値が1ずつ増加するのは解ります。
①で、iが9の時、1が加算され、iは10になりますよね?
それで再度、再帰をしようとした際に、ifの判定で偽になりますよね?
それでブロックを抜けて、呼ばれたmainに戻り、何も画面に表示せずに終了するのではないだろうか?

何故、こちらのコードの出力結果が、②のようになるのかが理解出来ません。

お解りでおられましたら、ご教示お願い申し上げたい次第です。

コメントを投稿

0 コメント