問 題
再帰的に定義された以下の手続 proc で proc(3) を実行したとき、印字される数字を順番に並べたものとして最も妥当なのはどれか。
1. 321
2. 32123
3. 321123
4. 3210123
5. 32100123
正解 (3)
解 説
proc(3) → n ≠ 0 → 「3 を印字」 して、proc(2) の呼び出し
proc(2) → n ≠ 0 → 「2 を印字」 して、proc(1) の呼び出し
proc(1) → n ≠ 0 → 「1 を印字」 して、proc(0) の呼び出し
proc(0) → n = 0 なので 戻る、さっきの proc(1) の「続き」へ
→1 を印字して、proc(2) へ戻る
→2 を印字して、proc(3) へ戻る
→3 を印字して、戻る。つまりおしまい。「321123」が出力されている。
以上より、正解は 3 です。
コメント