平成31年春期試験午前問題 問6
あさん
(No.1)
なぜ答えは[1,2,3,1,2,3, 3, 2, 1]にならないのでしょうか?
答えはBに6個しか入っていませんが、まだCに3つ残っています。
また、解説を見ると「呼び出し3回目の続き」と途中に書いてありますが、これは何故このタイミングで続きをしているのですか?
答えはBに6個しか入っていませんが、まだCに3つ残っています。
また、解説を見ると「呼び出し3回目の続き」と途中に書いてありますが、これは何故このタイミングで続きをしているのですか?
2020.05.13 00:16
guestさん
★FE ブロンズマイスター
(No.2)
※問題文中の「Aからpopした値をCにpushする。」を面倒なので「A→C」と書きます。
「Cが空になるまで」とはどこにも書いていません。
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()は完了できません。
指が疲れてきたのでここらで一度、これをヒントにもう一度、解説を読んでみてください。
> 答えは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日経過したスレッドへの投稿はできません。
広告