平成29年度秋期 応用情報技術者試験 午前 問7
fact (n) は,非負の整数 n に対して n の階乗を返す。fact (n) の再帰的な定義はどれか。
- ア if n=0 then return 0 else return n×fact (n−1)
- イ if n=0 then return 0 else return n×fact (n+1)
- ウ if n=0 then return 1 else return n×fact (n−1)
- エ if n=0 then return 1 else return n×fact (n+1)
解答・解説を見る
正解:ウ
AI解説
階乗はn!=n×(n−1)!という漸化式と、基底条件0!=1で再帰的に定義される。n=0のとき1を返し、それ以外はn×fact(n−1)と引数を小さくしながら自分自身を呼び出すウが正しい。再帰定義は「基底条件の値」と「再帰呼出しが基底に近づくか」の2点を確認する。 ア: 基底値が0だと、展開の最後で0が掛けられ全ての結果が0になってしまい階乗を計算できない。 イ: 基底値が0である上に、fact(n+1)では引数が増え続けて基底条件に到達せず、再帰が停止しない。 ウ: 正解。0!=1を基底とし、n×fact(n−1)で正しく縮小していく再帰定義である。 エ: 基底値1は正しいが、fact(n+1)では引数が増え続けて停止しない。 💡 再帰関数の正誤判定は「基底条件の戻り値は正しいか」「再帰呼出しごとに必ず基底へ近づくか」の2点チェックで機械的に解ける。0!=1は必須知識。
出典:平成29年度 秋期 応用情報技術者試験 午前 問7 / 独立行政法人情報処理推進機構(IPA)
※Web掲載用に表記を一部変更しています。著作権はIPAに帰属します。
※Web掲載用に表記を一部変更しています。著作権はIPAに帰属します。