IPA過去問ドリル

平成29年度 秋期 応用情報技術者試験 午前 問7

テクノロジ/アルゴリズム

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

出典:平成29年度 秋期 応用情報技術者試験 午前 問7

正解:ウ

解説

階乗の再帰的定義は,基底部でfact(0)=1とし,それ以外はn×fact(n-1)で定義します。基底値を1とせずに0とすると,全ての結果が0になってしまい正しい階乗が求まりません。

選択肢ごとの解説

  • 誤り。基底部をreturn 0とすると,fact(1)=1×fact(0)=1×0=0となり,本来1であるべき1の階乗が0になってしまい誤りです。
  • 誤り。基底部が0であることに加え,fact(n+1)のように引数を増やす方向に再帰すると計算が終了せず無限再帰になります。
  • 正しい。基底部をfact(0)=1とし,それ以外をn×fact(n-1)とする定義は,階乗の性質n!=n×(n-1)!と一致する正しい再帰的定義です。
  • 誤り。基底部は正しく1ですが,fact(n+1)のように引数を増やす方向に再帰すると計算が終了せず無限再帰になります。
応用情報技術者の過去問を演習モードで解く