過去問解きまくり研究所 ホーム

平成26年度 秋期 午前 問7

アルゴリズム

関数に関する問題

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

〔関数の定義〕字に書き起こしたもの(原典は大きな中括弧で3つの場合を並べている)

              ┌ 1                              (k = 0)
   f(n, k) = ┤ f(n−1, k−1) + f(n−1, k)      (0 < k < n)
              └ 1                              (k = n)
答えと解説を見る

✓ これが正解エ6

解説

端は 1、内側は上の二つの和で 6 になります。

この関数は、二つ目の引数が 0 のときと二つの引数が等しいときに 1 と決まり、それ以外では自分より一つ小さい二つの呼び出しの和になります。判定の軸は、1 と決まるところまで確実に展開できるかという一点です。求める値は、まず f(3,1) と f(3,2) の和に分かれます。f(3,1) は f(2,0) と f(2,1) の和で、前者は 1、後者は f(1,0) と f(1,1) がどちらも 1 なので 2 となり、合わせて 3 です。f(3,2) は f(2,1) と f(2,2) の和で、2 と 1 なので同じく 3 です。したがって求める値は 3 と 3 を足した 6 になります。段ごとに数を並べていくと、両端が 1 で内側が上の段の二つの和になる三角形ができ、四段目の真ん中に同じ数が現れます。この形は、いくつかの中から選ぶ場合の数を並べたものと同じ作りです。

ほかの選択肢はなぜ違うのか

出典:平成26年度 秋期 基本情報技術者試験 午前 問7(改変:原典の図表をテキストに書き起こした)

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)