HOME»基本情報技術者試験掲示板»基本情報平成31年春期午前6のトレース内容について
投稿する

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

 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さん(No.2) 
FE シルバーマイスター
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日経過したスレッドへの投稿はできません。
© 2010- 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop