HOME»基本情報技術者試験掲示板»平成31年春期試験午前問題  問6
投稿する

平成31年春期試験午前問題  問6 [2295]

 さん(No.1) 
なぜ答えは[1,2,3,1,2,3, 3, 2, 1]にならないのでしょうか?
答えはBに6個しか入っていませんが、まだCに3つ残っています。

また、解説を見ると「呼び出し3回目の続き」と途中に書いてありますが、これは何故このタイミングで続きをしているのですか?
2020.05.13 00:16
guestさん(No.2) 
FE ブロンズマイスター
※問題文中の「Aからpopした値をCにpushする。」を面倒なので「A→C」と書きます。

> 答えはBに6個しか入っていませんが、まだCに3つ残っています。
「Cが空になるまで」とはどこにも書いていません。

> 「呼び出し3回目の続き」と途中に書いてありますが、これは何故このタイミングで続きをしているのですか?
f()の途中に「f()を呼び出す。」とありますよね?
つまり、、、
f()は、「A→C」を実行後に「f()」を実行します。そして
f()は、「f()」を実行後に「C→B」を実行するのです。
重要なことなので2回言います。
f()は、「f()」を実行後に「C→B」を実行するのです。
念のためもう一度。
f()は、「f()」を実行後に「C→B」を実行するのです。

・・・・。
f()に呼び出されたf()を、区別のためf2()とでも呼びます。
f()はf2()を呼び出しましたが、呼び出しただけです。まだ「C→B」に行ってはいけません。
f()は、「f2()」を実行後に「C→B」を実行するのです。
念のためもう一d(殴

f2()が呼び出されました。f2()も例によって「そうでない場合{・・・}」に到達します。
「A→C」実行後「f3()」を実行します。
「f3()」実行後「C→B」を実行します。

どうでしょう。わかってきましたでしょうか?
この時点でf()も、f2()もまだ完了していません。
f3()完了後でないとf2()は完了できないし、
f2()完了後でないとf()は完了できません。

指が疲れてきたのでここらで一度、これをヒントにもう一度、解説を読んでみてください。
2020.05.13 09:55
 さん(No.3) 
わかりやすい解説で助かりました。またよろしくお願いします。
2020.05.14 17:22
返信投稿用フォームスパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
© 2010- 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop