平成25年度 春期 応用情報技術者試験 午前 問6
fact(n) は,非負の整数 n に対して n の階乗を返す。fact(n) の再帰的な定義はどれか。
キーボード:1〜4 で解答 → 次の問題 ← 前の問題
正解と解説を見る
解答する前に解説を開いたので、この問題は「見て解いた」として記録します(正解数には入りません)。
正解:ウ
階乗は 0! = 1,n! = n × (n−1)!(n ≧ 1)と再帰的に定義できます。
-
ア: if n=0 then return 0 else return n×fact(n−1)
誤り。0! = 1 なので,n = 0 のときに 0 を返すのは誤りです。この定義ではどの n でも結果が 0 になってしまいます。 -
イ: if n=0 then return 0 else return n×fact(n+1)
誤り。0! を 0 としている点が誤りで,さらに n+1 を呼び出すため n ≧ 1 では再帰が終了しません。 -
ウ: if n=0 then return 1 else return n×fact(n−1)
正しい。0! = 1,n! = n × (n−1)! という階乗の定義そのものです。n が1ずつ減って 0 で再帰が終了します。 -
エ: if n=0 then return 1 else return n×fact(n+1)
誤り。n+1 を呼び出すため n ≧ 1 では n が増え続け,再帰が終了しません。
答え
ウ: if n=0 then return 1 else return n×fact(n−1)
出典:平成25年度 春期 応用情報技術者試験 午前 問6