基本情報技術者試験 - 令和5年1月修了 - 問8

次の関数 f(n,k) がある。f(4,2) の値は幾らか。

ア3
イ4
ウ5
エ6
答え : エ
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
同一問題 : 〔平31修1問6〕〔平29修6問7〕〔平26秋問7〕〔平23修12問7〕〔平21修12問8〕
解説 :
関数 f(n,k) は,kが0またはnと等しいときには常に1を返し,それ以外の場合は f(n-1,k-1) と f(n-1,k) の和を返すという再帰的な定義になっています。この定義はパスカルの三角形における二項係数の計算方法と同じ構造を持っています。

f(4,2) を求めるには,f(3,1) と f(3,2) の和を計算する必要があります。さらに f(3,1) は f(2,0) と f(2,1) の和,f(3,2) は f(2,1) と f(2,2) の和というように,再帰的に値をさかのぼって計算していきます。

最終的に k=0 または k=n となる場所まで分解すると,全て1という値にたどり着き,それらを足し合わせていくことで f(4,2) の値が6であることが求まります。

これは二項係数で表すと4C2の値に相当し,実際にこれを計算しても6になることが確認できます。他の選択肢は再帰の展開を一部誤った場合に出てくる値です。再帰関数の問題では,木構造を描いて値をさかのぼりながら丁寧に計算することが重要です。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる