過去問ハブ🔥 0日
データ構造とアルゴリズム計算量とオーダー記法難易度 難45 / 50

関数 f を「n が0または1のとき1を返し、n が2以上のとき f(n−1) + f(n−2) を返す」と再帰的に定義する。f(5) を計算するとき、最初の呼出しも含めて f は何回呼び出されるか。

選択肢をタップすると、その場で答え合わせできます

正解と解説を見る

正解 C15

解説

正解は「15」です。f(n) の呼出し回数を C(n) とすると、f(n) 自身の1回に f(n−1) と f(n−2) の呼出し回数が加わるので、、 です。順に計算すると C(2)=3、C(3)=5、C(4)=9、C(5)=15 となります。f(3) が2回、f(2) が3回計算されるなど、同じ計算が重複していることが分かります。「8」は f(5) の値そのもので、呼出し回数ではありません。「9」は f(4) を求めるときの呼出し回数です。「16」は呼出しのたびに回数がちょうど2倍になると考えた の値で、f(0) や f(1) では再帰しないことを考慮していません。

  • #再帰
  • #漸化式

この調子でデータ構造とアルゴリズムを続けて解く

▶ この科目の連続演習へ進む(10問)

この問題の分野を深く学ぶなら

PR情報工学・理系基礎の教科書を探す

詳細を見る

データ構造とアルゴリズムの問題一覧へ戻る

「計算量とオーダー記法」の関連問題