基本情報平成31年春期午前6のトレース内容について

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
idriveさん  
(No.1)
トレース内容について(f()呼び出し4回目)までのトレースの内容は理解できたのですが
この処理以降の(f()呼び出し3回目の続き)以降の処理が理解できていません。

何故これ以降の関数の呼び出しの回数が3回、2回、1回となるのでしょうか

トレース内容について(f()呼び出し4回目)が終了した後は
Cからpopした値をBにpushするを1回実施後はf()Aが空ならば何もしないで抜ける
と思っているのですが

ご教授いただけますでしょうか
お願いいたします。
2024.06.05 17:26
boyonboyonさん 
FE シルバーマイスター
(No.2)
f()だけだとわかりにくいので、番号を付けます。
①から⑩の順に実行されます。

f1(){
  Aが、空ならば何もしない。
  }
  そうでない場合{
  Aからpopした値をCにpushする  ①A{1,2} B{1,2,3} C{1,2,3,3}
  f2()を呼び出す            ②を実行  ⑨
  Cからpopした値をBにpushする  ⑩A{} B{1,2,3,1,2,3} C{1,2,3}
  }
}・・・⑩を実行したので、f1()終了

f2(){
  Aが、空ならば何もしない。
  }
  そうでない場合{
  Aからpopした値をCにpushする  ②A{1} B{1,2,3} C{1,2,3,3,2}
  f3()を呼び出す            ③を実行  ⑦
  Cからpopした値をBにpushする  ⑧A{} B{1,2,3,1,2} C{1,2,3,3}
  }
}・・⑧を実行したので、f2()終了→⑨の次の行へ

f3(){
  Aが、空ならば何もしない。
  }
  そうでない場合{
  Aからpopした値をCにpushする  ③A{} B{1,2,3} C{1,2,3,3,2,1}
  f4()を呼び出す                ④を実行  ⑤
  Cからpopした値をBにpushする  ⑥A{} B{1,2,3,1} C{1,2,3,3,2}
  }
}・・ ⑥を実行したので、f3()終了→⑦の次の行へ

f4(){
  Aが、空ならば何もしない。  ④
  }
  そうでない場合{・・・ここは実行されません。
  Aからpopした値をCにpushする
  f5()を呼び出す
  Cからpopした値をBにpushする
  }
}・・④を実行して、f4()終了→⑤の次の行へ
2024.06.05 19:31
idriveさん  
(No.3)
boyonboyonさん

再帰関数を認識をせずトレースをしていました。

ありがとうございました。
2024.06.06 00:14

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。

その他のスレッド


Pagetop