応用情報技術者 2012年 秋期 午前2 問07
問題文
次の関数の定義に従ってを再帰的に求めるとき、必要な加算の回数は幾らか。
選択肢
ア:3
イ:4(正解)
ウ:5
エ:7
次の関数の定義に従ってを再帰的に求めるとき、必要な加算の回数は幾らか。【午前2 解説】
要点まとめ
- 結論:を再帰的に計算する際の加算回数は4回です。
- 根拠:はフィボナッチ数列の定義に似ており、再帰呼び出しごとに加算が発生します。
- 差がつくポイント:再帰呼び出しの展開を正確に追い、加算回数を数えることが重要です。
正解の理由
関数はのとき1を返し、それ以外はと定義されています。
を計算する際、とを計算し、それぞれも再帰的に計算されます。
加算は、、の計算時に発生し、合計4回となるため、イが正解です。
を計算する際、とを計算し、それぞれも再帰的に計算されます。
加算は、、の計算時に発生し、合計4回となるため、イが正解です。
よくある誤解
再帰呼び出しの回数と加算回数を混同し、加算回数を多く見積もる誤りが多いです。
また、ベースケースの戻り値に加算が含まれないことを見落としがちです。
また、ベースケースの戻り値に加算が含まれないことを見落としがちです。
解法ステップ
- を計算するためにとを呼び出す。
- はとを呼び出し、はベースケースで1を返す。
- 各非ベースケースで加算が1回発生することを確認する。
- 加算回数を、、の計算時にそれぞれ1回ずつ数え、合計4回とする。
選択肢別の誤答解説
- ア: 3回は加算回数の数え漏れがあるため誤りです。
- イ: 4回は正しい加算回数です。
- ウ: 5回は加算回数を過大評価しています。
- エ: 7回は再帰呼び出しの総数と混同した誤りです。
補足コラム
この問題はフィボナッチ数列の再帰計算における計算量の理解に役立ちます。
再帰呼び出しの重複を避けるメモ化や動的計画法を使うと計算効率が大幅に向上します。
再帰呼び出しの重複を避けるメモ化や動的計画法を使うと計算効率が大幅に向上します。
FAQ
Q: なぜベースケースでは加算が発生しないのですか?
A: ベースケースは単に値を返すだけで、加算処理を含まないためです。
A: ベースケースは単に値を返すだけで、加算処理を含まないためです。
Q: 再帰呼び出しの回数と加算回数は同じですか?
A: いいえ。加算は非ベースケースの呼び出しごとに1回発生しますが、呼び出し回数はそれより多くなります。
A: いいえ。加算は非ベースケースの呼び出しごとに1回発生しますが、呼び出し回数はそれより多くなります。
関連キーワード: 再帰、フィボナッチ数列、加算回数、ベースケース、メモ化

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

