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

次の関数 s を s(7) として呼び出したときの戻り値はどれか。

○整数型: s(整数型: n)
  if (n ≦ 0)
    return 0
  endif
  return n + s(n − 2)
  1. A15
  2. B16
  3. C28
答えと解説を見る

正解:B. 16

s(7) は 7 + s(5) を、s(5) は 5 + s(3) を、s(3) は 3 + s(1) を、s(1) は 1 + s(−1) を求めようとして順に呼び出し、s(−1) は n ≦ 0 なので0を返します。呼出し元に戻りながら足し合わされて、s(7) = 7 + 5 + 3 + 1 + 0 = 16 になります。7以下の正の奇数の和です。

  • A. n ≦ 1 で0を返すとした場合の 7 + 5 + 3 の値です。実際には s(1) は 1 + s(−1) = 1 を返します。
  • B. 正しい。7 + 5 + 3 + 1 = 16 です。
  • C. s(n − 1) を呼ぶとした場合の 7 + 6 + … + 1 の値です。
この分野を解く 分野ページへ

関連する計算ツール

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

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

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

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