基本情報技術者 平成28年春期 午前問7

午前問7

nの階乗を再帰的に計算する関数 F(n) の定義において,aに入れるべき式はどれか。ここで,nは非負の整数である。

 n>0のとき, F(n)=a
 n=0のとき, F(n)=1
  • n+F(n−1)
  • n−1+F(n)
  • n×F(n−1)
  • (n−1)×F(n)
  • [この問題の出題歴]
  • 基本情報技術者 H20秋期 問14

分類

テクノロジ系 » アルゴリズムとプログラミング » プログラミング

正解

解説

階乗とは、1からある自然数nまでの相乗のことをいい、nの階乗は記号!を使って「n!」と表記されます。例えば 4! であれば、

 4×3×2×1=24

というように計算します。この問題ではこの4!を仮値として各選択肢の式をaに代入することで正しいかを検証していきます。
  •  f(4)=4+F(3)=4+3+F(2)
    =4+3+2+F(1)=4+3+2+1+F(0)
    =4+3+2+1+1=11 …×
  •  f(4)=4−1+F(4)=4−1+4−1+F(4)
    =4−1+4−1+4−1+F(4) …×
    (再帰呼び出しが永遠に続くため結果が計算できません)
  •  f(4)=4×F(3)=4×3×F(2)
    =4×3×2×F(1)=4×3×2×1×F(0)
    =4×3×2×1×1=24 …
  •  f(4)=(4−1)×F(4)=(4−1)×(4−1)×F(4)
    =(4−1)×(4−1)×(4−1)×F(4) …×
    「イ」と同様に再帰関数の引数が変化していかないため計算が永遠と続いてしまいます。
以上のことからaに入れるべき式として適切なのは「n×F(n−1)」だとわかります。
© 2010-2019 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop