平成31年春季午前  問6

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
皆さん頑張ろうさん  
(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する。」という処理を繰り返す、という理解でしょうか?
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日経過したスレッドへの書込みはできません。

その他のスレッド


Pagetop