SkillStack
テクノロジ系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に質問できる
SkillStackで無料で始める