基本情報技術者 2019年 秋期 午前(科目A) 問11
問題文
自然数に対して、次のとおり再帰的に定義される関数を考える。の値はどれか。
選択肢
ア:6
イ:9
ウ:15(正解)
エ:25
自然数の再帰関数 f(n) の値を求める【午前2 解説】
要点まとめ
- 結論:再帰定義に従うと f(5)=5+4+3+2+1=15、したがって選択肢の正解はウです。計算は再帰を逆展開して行います。
- 根拠:定義は f(n)=1 (n≤1)、それ以外は f(n)=n+f(n-1) であり、n≥1 に対して と表せます。
- 差がつくポイント:基底条件(n≤1)の扱いを誤らないこと、再帰を展開して項を明示すること、公式 の適用範囲を確認すること。
正解の理由
正解は ウ です。
定義に従い f(5) を再帰展開すると、 , , …, (基底条件)。よって 。一般には に対して が成り立ちます。
定義に従い f(5) を再帰展開すると、 , , …, (基底条件)。よって 。一般には に対して が成り立ちます。
よくある誤解
- 基底条件を「n=0 のとき 0 を返す」と誤解してしまう。問題文では n≤1 のとき 1 を返す点に注意。
- 再帰展開を途中で止めて合計項を漏らす(例えば 5+4 までで止めるなど)。必ず最後の基底まで展開する。
- 和の公式を使う際に適用範囲を確認せず n=0 を含めるなどして誤用すること。
解法ステップ
- 定義を確認:f(n)=1(n≤1)、それ以外は f(n)=n+f(n−1)。
- n=5 に対して再帰を逆展開する:f(5)=5+f(4), f(4)=4+f(3), …, f(1)=1。
- 各項を足す:5+4+3+2+1=15。
- 必要なら公式を適用:。
選択肢別の誤答解説
- ア: 6 — これは 1+2+3 の合計に相当し、n=3 の場合の値。再帰を途中で止めた可能性。
- イ: 9 — たとえば 5+4 を答えとして終了させた誤り、または項を取り違えた計算ミス。
- ウ: 15 — 正解。再帰を正しく展開すると得られる合計値。
- エ: 25 — 5 の二乗を取る誤解( と誤認)や、誤った公式適用によるもの。問題定義からは導けない。
補足コラム
- 一般公式の導出(簡単な帰納法):
基底: のとき は成り立つ。
帰納: と仮定すると 。したがって全ての で 。 - 実行例(Python)
def f(n):
if n <= 1:
return 1
return n + f(n-1)
print(f(5)) # 15
- 注意:問題では基底が「n≤1 のとき 1」であるため、 となり、 の場合は公式 と一致しません。公式は を前提とする点に留意してください。
FAQ
Q1: 自然数に 0 を含める場合はどうなる?
A1: 問題定義通りなら です。公式 は のときに使います。 では公式は 0 になり定義と異なります。
A1: 問題定義通りなら です。公式 は のときに使います。 では公式は 0 になり定義と異なります。
Q2: 再帰より公式を直接使ってもよいですか?
A2: はい。再帰を展開して和の形に気づければ、()を利用して迅速に計算できます。
A2: はい。再帰を展開して和の形に気づければ、()を利用して迅速に計算できます。
Q3: 基底条件が 0 のときと 1 のときで結果はどう違いますか?
A3: 基底を 0 にして とした場合、 は 0 から n までの和になり結果が変わります。問題文の基底条件を必ず確認してください。
A3: 基底を 0 にして とした場合、 は 0 から n までの和になり結果が変わります。問題文の基底条件を必ず確認してください。
関連キーワード: 再帰関数、和の公式、帰納法、基底条件、再帰展開、数列和、アルゴリズム基礎

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

