令和7年度 春期 応用情報技術者試験 午前 問7

テクノロジアルゴリズム

この問題は2025(R7)春 応用情報技術者 午前に出題されたものです。出題時点の法令・制度に基づく内容のため、現行の内容と一致しない場合があります。

本ページの問題文・選択肢は、原本の体裁を Web 表示用に正規化しています(改行・記号・数式・図表参照の調整)。設問の趣旨および正解に影響する変更は加えていません。

fact(n)fact(n)は,非負の整数nnに対してnnの階乗を返す。fact(n)fact(n)の再帰的な定義はどれか。

解答・解説を読む

正解: 選択肢

再帰的な定義を用いて非負の整数 nn階乗 n!n! を求める場合、以下の2つの条件を満たす必要があります。

  1. ベースケース: n=0n=0 のとき、0!=10! = 1 を返す。
  2. 再帰ステップ: n>0n>0 のとき、n!=n×(n1)!n! = n \times (n-1)! を求めるため、nnfact(n1)fact(n-1) を掛けた値を返す。

これらを組み合わせた定義は、「if n=0n=0 then return 11 else return n×fact(n1)n \times fact(n-1)」となります。

各選択肢の解説

  • : ベースケースで 00 を返しているため、すべての値に 00 が掛けられ、結果が 00 になってしまうため誤りです。
  • : ベースケースが 00 であるうえに、再帰呼び出しで n+1n+1 を渡しているため、終了条件を満たさず無限ループに陥り誤りです。
  • : 正しい再帰的な定義です。
  • : 再帰呼び出しで n+1n+1 を渡しているため、引数が減ることがなく無限ループに陥るため誤りです。