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