HOME»応用情報技術者試験掲示板»平成25年・秋期
投稿する
»[0294] 午後対策としての勉強法 投稿数:1
»[0293] 応用情報技術者 平成24年秋期問題一覧 午前問69 投稿数:2
平成25年・秋期 [0296]
チーモンさん(No.1)
平成25年・秋期の問8
再帰的に定義された手順Procで、....
という問題ですが、回答は「イ」となっています。
イ;5432112345
値を代入しながらトレースした際、「543211」までは理解できたのですが、なぜ回答にある通り、その後「2345」と印字される数字が上がって行くのでしょうか?
再帰的に定義された手順Procで、....
という問題ですが、回答は「イ」となっています。
イ;5432112345
値を代入しながらトレースした際、「543211」までは理解できたのですが、なぜ回答にある通り、その後「2345」と印字される数字が上がって行くのでしょうか?
2014.03.26 23:00
名無しさん(No.2)
以下のような処理手順になります
proc(5)
0でない
5を印字
proc(4)
0でない
4を印字
proc(3)
0でない
3を印字
proc(2)
0でない
2を印字
proc(1)
0でない
1を印字
proc(0)
0であるから戻る
1を印字
proc(1)終了
2を印字
proc(2)終了
3を印字
proc(3)終了
4を印字
proc(4)終了
5を印字
proc(5)終了
よって印字される数字は
「5432112345」です
質問者さんは問題文の
proc(n)
n=0 ならば戻る
そうでなければ
{
nを印字する
proc(n-1)を呼び出す
nを印字する ←ココ
}
を実行して戻る
矢印部分を、proc(1)終了の次から考え忘れているため「543211」でとまってしまったのでしょう
proc(5)
0でない
5を印字
proc(4)
0でない
4を印字
proc(3)
0でない
3を印字
proc(2)
0でない
2を印字
proc(1)
0でない
1を印字
proc(0)
0であるから戻る
1を印字
proc(1)終了
2を印字
proc(2)終了
3を印字
proc(3)終了
4を印字
proc(4)終了
5を印字
proc(5)終了
よって印字される数字は
「5432112345」です
質問者さんは問題文の
proc(n)
n=0 ならば戻る
そうでなければ
{
nを印字する
proc(n-1)を呼び出す
nを印字する ←ココ
}
を実行して戻る
矢印部分を、proc(1)終了の次から考え忘れているため「543211」でとまってしまったのでしょう
2014.03.27 01:30
チーモンさん(No.3)
ご回答ありがとうございます。
ご指摘頂いた矢印部分というのが、「543211」の最後に「11」となるポイントだと思っています。
ただ、なぜ「proc(1)終了の次」がproc(2)、次がproc(3)…という感じで、nの値が大きくなって行くのだろうか?という箇所がよくわかりません。
すみません。
ご指摘頂いた矢印部分というのが、「543211」の最後に「11」となるポイントだと思っています。
ただ、なぜ「proc(1)終了の次」がproc(2)、次がproc(3)…という感じで、nの値が大きくなって行くのだろうか?という箇所がよくわかりません。
すみません。
2014.03.27 21:36
イクメンさん(No.4)
例えば,proc(5)で,5は2回印字されます。
2回印字の間で,proc(4)が呼び出されます。
「間」で呼び出されているからです。
proc(5)
{
5を印字する
proc(5-1)を呼び出す
5を印字する
}
2回印字の間で,proc(4)が呼び出されます。
「間」で呼び出されているからです。
proc(5)
{
5を印字する
proc(5-1)を呼び出す
5を印字する
}
2014.03.27 23:23
チーモンさん(No.5)
ありがとうございました。
ようやく理解できました。
回答を頂いた方々に感謝致します。
ようやく理解できました。
回答を頂いた方々に感謝致します。
2014.03.28 01:50
その他のスレッド
»[0295] 平成23年秋午後問12設問3 投稿数:3»[0294] 午後対策としての勉強法 投稿数:1
»[0293] 応用情報技術者 平成24年秋期問題一覧 午前問69 投稿数:2