平成31年春季午前 問6
皆さん頑張ろうさん
(No.1)
https://www.fe-siken.com/fekakomon.php
この問題の処理の順番が分かりません。
Aからpopした値をCにpushする。→ƒ()を呼び出す。→Cからpopした値をBにpushする。
上記の処理は一連の流れではないのでしょうか?
回答を見ると下記のように感じられます。
Aからpopした値をCにpushする。(Aがなくなるまで繰り返す)→ƒ()を呼び出す。
1回数字を移動させて下の行の処理に移る、と勝手に思っていましたが、Aから数字が無くなるまで「Aからpopした値をCにpushする。」という処理を繰り返す、という理解でしょうか?
この問題の処理の順番が分かりません。
Aからpopした値をCにpushする。→ƒ()を呼び出す。→Cからpopした値をBにpushする。
上記の処理は一連の流れではないのでしょうか?
回答を見ると下記のように感じられます。
Aからpopした値をCにpushする。(Aがなくなるまで繰り返す)→ƒ()を呼び出す。
1回数字を移動させて下の行の処理に移る、と勝手に思っていましたが、Aから数字が無くなるまで「Aからpopした値をCにpushする。」という処理を繰り返す、という理解でしょうか?
2024.02.11 11:18
電タックさん
★FE ブロンズマイスター
(No.2)
>上記の処理は一連の流れではないのでしょうか?
一連の流れです。
ある関数の中で、別の関数(再帰関数を含む)を呼び出すと
1.現在実行中の関数は実行の行で停止
2.呼び出された関数が開始
3.2の処理が終了
4.1の実行の行から再開
という流れになります。
○関数1
_処理A
_関数2呼び出し
_処理B
○関数2
_処理C
_関数3呼び出し
_処理D
○関数3
_処理E
_関数4呼び出し
_処理F
○関数4
_処理G
この時○関数1から処理を開始した場合の処理順は
A→C→E→G→F→D→B
となります。
これと同じ仕組みが再帰関数f()でおきています。
ちなみにですが
・A,C,EがスタックAからpopしてスタックCへpush
・B,D,EがスタックCからpopしてスタックBへpush
・Gは何もしない
と一致させています。
2024.02.11 13:22
広告
返信投稿用フォーム
スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
広告