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

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

○整数型: fib(整数型: n)
  整数型: a ← 0, b ← 1, t
  for (i を 1 から n まで 1 ずつ増やす)
    t ← a + b
    a ← b
    b ← t
  endfor
  return a
  1. A34
  2. B55
  3. C89
答えと解説を見る

正解:B. 55

繰返しのたびに (a, b) は、隣り合うフィボナッチ数の組を1つずつ進めます。(0, 1) → (1, 1) → (1, 2) → (2, 3) → (3, 5) → (5, 8) → (8, 13) → (13, 21) → (21, 34) → (34, 55) → (55, 89) と10回進むので、a = 55 を返します。a は i 回目の繰返しの後に i 番目のフィボナッチ数になります。素朴な再帰で書くと同じ値を何度も計算しますが、この書き方では n 回の繰返しで済みます。

  • A. 繰返しが1回少ない(終値を n − 1 にした)場合の値です。
  • B. 正しい。10回進めた後の a = 55 です。
  • C. b を返した場合の値で、11番目のフィボナッチ数です。
この分野を解く 分野ページへ

関連する計算ツール

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

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

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

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