アルゴリズム (全82問中55問目)
No.55
再帰的に定義された手続きprocで,proc(5)を実行したとき,印字される数字を順番に並べたものはどれか。
proc(n)
n=0 ならば戻る
そうでなければ
{
nを印字する
proc(n−1)を呼び出す
nを印字する
}
を実行して戻る
n=0 ならば戻る
そうでなければ
{
nを印字する
proc(n−1)を呼び出す
nを印字する
}
を実行して戻る
出典:平成19年秋期 問14
- [この問題の出題歴]
- 応用情報技術者 H25秋期 問8
分類
テクノロジ系 » アルゴリズムとプログラミング » アルゴリズム
正解
イ
解説
proc(5)の流れをトレースします。
proc(5)
n=0ではないので5を印字
proc(4)を呼び出す
↓
proc(4)
n=0ではないので4を印字
proc(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を印字してproc(4)内に戻る
↓
4を印字してproc(5)内に戻る
↓
5を印字して処理を終了する
印字された数字を順番に並べると「5432112345」になります。
proc(5)
n=0ではないので5を印字
proc(4)を呼び出す
↓
proc(4)
n=0ではないので4を印字
proc(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を印字してproc(4)内に戻る
↓
4を印字してproc(5)内に戻る
↓
5を印字して処理を終了する
印字された数字を順番に並べると「5432112345」になります。