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

次の関数 c を c(4, 2) として呼び出したとき、c が呼ばれる回数(最初の呼出しを含む)はどれか。

○整数型: c(整数型: n, 整数型: k)
  if (k = 0 or k = n)
    return 1
  endif
  return c(n − 1, k − 1) + c(n − 1, k)
  1. A5
  2. B6
  3. C11
答えと解説を見る

正解:C. 11

c(n, k) は、n 個から k 個を選ぶ組合せの数(二項係数)を、パスカルの三角形の関係で求めます。c(4, 2) は c(3, 1) と c(3, 2) を呼び、それぞれがさらに c(2, 0) と c(2, 1)、c(2, 1) と c(2, 2) を呼び、2回現れる c(2, 1) はどちらも c(1, 0) と c(1, 1) を呼びます。1を返す呼出しが6回、2つの呼出しを行う呼出しが5回あり、合計11回です。戻り値は6で、1を返す呼出しの回数と一致します。

  • A. 2つの呼出しを行う呼出しの回数だけを数えた値です。1を返す6回も数えます。
  • B. 戻り値 c(4, 2) = 6 で、呼ばれる回数ではありません。
  • C. 正しい。1を返す6回と、2つの呼出しを行う5回の合計です。
この分野を解く 分野ページへ

関連する計算ツール

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

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

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

  1. ⊕ はビットごとの排他的論理和を表す。次のプログラムを実行した後の x と y の値の組はどれか。
  2. x と y は8ビットの符号なし整数とする。<< と >> は論理シフトで、空いたビットには0が入り、8ビットからあふれたビットは捨てる。∨ はビットごとの論理和を表す。次のプログラムを実行した後の y の値はどれか。
  3. ∧ はビットごとの論理積を表す。次のプログラムを実行した後の c の値はどれか。
  4. x と y は8ビットの符号なし整数とする。<< と >> は論理シフトで、空いたビットには0が入り、8ビットからあふれたビットは捨てる。∨ はビットごとの論理和を表す。x が 75 のとき、次の代入を実行した後の y の値はどれか。
  5. 次の手続 bubble は、整数型の配列 data を昇順に並べ替えるバブルソートである。swap(data, j, k) は data[j] と data[k] の値を入れ替える手続で、配列の要素番号は1から始まる。プログラム中の【a】に入れる字句はどれか。