テクノロジ系7 / 80問
応用情報技術者試験 令和7年度 春期 午前 問7
fact(n)は、非負の整数nに対してnの階乗を返す。fact(n)の再帰的な定義はどれか。
選択肢を押すと答え合わせができます。
正解と解説を見る
【正解】ウ
階乗は、正の整数nについて「n!=n×(n-1)!」と表せ、計算を終了させる基底条件は「0!=1」です。したがって、nが0なら1を返し、それ以外ならn×fact(n-1)を返すウが正解です。
例えばfact(3)をトレースすると、引数nは3→2→1→0と変化します。呼出しは、fact(3)=3×fact(2)、fact(2)=2×fact(1)、fact(1)=1×fact(0)となり、fact(0)が1を返します。その後、呼出し元へ戻りながら、fact(1)=1、fact(2)=2、fact(3)=6と計算されます。
アは誤りです。nを1ずつ減らす点は正しいものの、fact(0)を0としているため、どの正の整数でも最後に0を掛けて結果が0になります。
イは誤りです。fact(0)が0である点に加え、nを増加させて再帰呼出しするため、正のnから基底条件の0へ到達せず、処理が終了しません。
エは誤りです。fact(0)=1は正しいのですが、fact(n+1)を呼び出すとnが増え続け、正のnでは基底条件へ到達できません。
【ポイント】 再帰処理には、答えを直接返す基底条件と、基底条件へ近づく再帰呼出しが必要です。 階乗では「0!=1」と「n!=n×(n-1)!」をセットで覚えます。
出典:令和7年度 春期 応用情報技術者試験 午前 問7
※ 解説は SkillStack 編集部が作成したものです。Web 表示のため、図表の配置や表記を一部改めています。
この回の80問を、アプリで通しで解く
- 本番と同じ問題数・制限時間で通し演習(模試モード)
- 間違えた問題は自動で「復習すべき問題」に回る
- 解説で分からない点はAIに質問できる