大変、お世話になっております。
現在、「独習 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 コメント