サンプル問題 [科目B]問7
問7
次のプログラム中の に入れる正しい答えを,解答群の中から選べ。
関数 factorial は非負の整数 n を引数にとり,その階乗を返す関数である。非負の整数 n の階乗は n が0のときに1になり,それ以外の場合は1から n までの整数を全て掛け合わせた数となる。
〔プログラム〕
関数 factorial は非負の整数 n を引数にとり,その階乗を返す関数である。非負の整数 n の階乗は n が0のときに1になり,それ以外の場合は1から n までの整数を全て掛け合わせた数となる。
〔プログラム〕
- (n-1) × factorial(n)
- factorial(n-1)
- n
- n × (n-1)
- n × factorial(1)
- n × factorial(n-1)
分類
アルゴリズムとプログラミング » データ構造及びアルゴリズム
正解
カ
解説
非負の整数であれば何でもいいですが、引数に仮の値を与えて正しい結果が返るかどうかを検証するのが確実です。ここでは引数を4として、「4!=4×3×2×1=24」が返されるかどうかを考えていきます。
- factorial(4)
=3×factorial(4)
=3×3×factorial(4)
=3×3×3×factorial(4)
…
永久ループになってしまい値が返ってこないので誤りです。 - factorial(4)
=factorial(3)
=factorial(2)
=factorial(1)
=factorial(0)=1
結果が常に1になってしまうので誤りです。 - factorial(4)=4
引数の値をそのまま返すだけなので誤りです。 - factorial(4)=4×3=12
引数の値とそれよりも1少ない数の乗算の結果を返すだけで、階乗の結果とはなりません。 - factorial(4)
=4×factorial(1)
=4×1×factorial(1)
=4×1×1×factorial(1)
…
永久ループになってしまい値が返ってこないので誤りです。 - 正しい。
factorial(4)
=4×factorial(3)
=4×3×factorial(2)
=4×3×2×factorial(1)
=4×3×2×1×factorial(0)
=4×3×2×1×1=24
階乗の結果を得ることができるので正しい式です。