平成24年度秋期 応用情報技術者試験 午前 問7

分野:アルゴリズムとプログラミング(データ構造・アルゴリズム・探索整列・計算量の実際・擬似言語・プログラム言語・データ記述言語)|実際に出題されたIPA過去問題

次の関数g(x)の定義に従ってg(4)を再帰的に求めるとき,必要な加算の回数は幾らか。g(x)=if x<2 then 1 else g(x−1)+g(x−2)

  1.  3
  2.  4
  3.  5
  4.  7
解答・解説を見る

正解:イ

AI解説

g(x)はx<2のとき1、それ以外はg(x−1)+g(x−2)と定義される。g(4)=g(3)+g(2)で加算1回、g(3)=g(2)+g(1)で1回、g(2)=g(1)+g(0)で1回だがg(2)は2回呼ばれるため加算も2回発生する。合計1+1+2=4回でイが正しい。 ア: 3はg(2)の計算結果を使い回す(メモ化する)場合の加算回数であり、単純な再帰では重複計算が発生する。 イ: 正解。g(4)で1回、g(3)で1回、2回のg(2)呼出しで各1回、計4回の加算が必要である。 ウ: 5は呼出し回数や加算回数の数え間違いによる値である。 エ: 7は関数呼出しの総回数(g(4),g(3),g(2)×2,g(1)×2,g(0)×2など)と混同した値に近い。 💡 再帰の計算量問題は呼出しツリーを描き、加算が起こるのは「else側の節(ノード)」だけと数えるのが確実。同じ引数の呼出しが複数回現れる点がフィボナッチ型再帰の特徴である。

出典:平成24年度 秋期 応用情報技術者試験 午前 問7 / 独立行政法人情報処理推進機構(IPA)
※Web掲載用に表記を一部変更しています。著作権はIPAに帰属します。
📱 演習アプリで解く(無料・登録不要・2,640問収録)

「アルゴリズムとプログラミング」分野の攻略ポイント

データ構造・アルゴリズム・探索と整列・計算量・擬似言語・プログラム言語・データ記述言語が対象です。擬似言語のトレースは時間はかかるものの、落ち着いて表を書けば必ず正解にたどり着く「確実に取れる」問題です。

アルゴリズムとプログラミングの攻略ポイントをすべて見る(要点6項目・ひっかけ3項目)→

同じ分野(アルゴリズムとプログラミング(データ構造・アルゴリズム・探索整列・計算量の実際・擬似言語・プログラム言語・データ記述言語))の過去問