プログラミングの基礎(擬似言語のトレース)

次の手続 p を p(3) として呼び出したとき、出力される値の並びはどれか。

○p(整数型: n)
  if (n > 0)
    p(n − 1)
    出力 n
    p(n − 1)
  endif
  1. A1, 1, 2, 1, 1, 2, 3
  2. B3, 2, 1, 1, 2, 1, 1
  3. C1, 2, 1, 3, 1, 2, 1
答えと解説を見る

正解:C. 1, 2, 1, 3, 1, 2, 1

p(1) は p(0)、1の出力、p(0) の順に実行するので「1」だけを出力します。p(2) は p(1)、2の出力、p(1) なので「1, 2, 1」です。p(3) は p(2) の「1, 2, 1」、3の出力、もう一度 p(2) の「1, 2, 1」で、1, 2, 1, 3, 1, 2, 1 になります。出力は 2³ − 1 = 7 個で、3枚のハノイの塔で動かす円盤の番号の順と同じです。

  • A. 2回の再帰呼出しの後で出力する場合の並びです。
  • B. 再帰呼出しの前に出力する場合の並びです。
  • C. 正しい。p(2) の出力、3、p(2) の出力の順です。
この分野を解く 分野ページへ

関連する計算ツール

プログラミングの基礎(擬似言語のトレース)の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

プログラミングの基礎(擬似言語のトレース)のほかの問題

  1. 次の関数 fib を fib(10) として呼び出したときの戻り値はどれか。
  2. 次の関数 c を c(4, 2) として呼び出したとき、c が呼ばれる回数(最初の呼出しを含む)はどれか。
  3. ⊕ はビットごとの排他的論理和を表す。次のプログラムを実行した後の x と y の値の組はどれか。
  4. x と y は8ビットの符号なし整数とする。<< と >> は論理シフトで、空いたビットには0が入り、8ビットからあふれたビットは捨てる。∨ はビットごとの論理和を表す。次のプログラムを実行した後の y の値はどれか。
  5. ∧ はビットごとの論理積を表す。次のプログラムを実行した後の c の値はどれか。