修了試験 2013-12-15実施分 基本情報技術者試験 問7
nの階乗を再帰的に計算する関数F(n)の定義において,aに入れるべき式はどれか。 ここで,nは非負の整数である。 n>0のとき,F(n)= a n=0のとき,F(n)=1
正答3
解説
正解は3です。 nの階乗n!は、1からnまでの整数をすべて掛け合わせた値で、0!は1と定義されます。 n!は「n×(n-1)!」と書けるので、自分自身を使って定義する再帰の形にできます。 【解法の流れ】 F(n)がn!を表すなら、F(n-1)は(n-1)!を表します。 n!=n×(n-1)!なので、F(n)=n×F(n-1)と書けます。 例えばF(3)は3×F(2)、F(2)は2×F(1)、F(1)は1×F(0)となり、F(0)=1から3×2×1×1=6が得られます。 【選択肢別解説】 1:× n+F(n-1)は、1からnまでの和を求める式です。 F(3)は3+2+1+1=7となり、3!=6になりません。 2:× n-1+F(n)は、右辺に求めたいF(n)そのものが入っています。 F(n)を求めるのにF(n)が必要になり、再帰が終わりません。 3:○ n×F(n-1)はn!=n×(n-1)!をそのまま表しています。 引数が1ずつ減ってF(0)=1に到達するので、計算が終わります。 4:× (n-1)×F(n)も右辺にF(n)が入っており、再帰が終わりません。 また、掛ける値もnではなくn-1になっています。 【ポイント】 再帰的な定義では、引数が小さくなる方向に自分を呼び出すことと、止まる条件があることが必要です。 この問題ではn=0のときF(n)=1が止まる条件です。まとめて解く
修了試験 2013-12-15実施分を通しで解く(80問)→