平成16年春期試験午前問題 問14

非負の整数nに対して次のとおりに定義された関数F(n),G(n)がある。F(5)の値は幾らか。

 F(n): if n≦1 then return 1 else return n×G(n-1)
 G(n): if n=0 then return 0 else return n+F(n-1)

  • 50
  • 65
  • 100
  • 120
正解 問題へ
分野:テクノロジ系
中分類:アルゴリズムとプログラミング
小分類:アルゴリズム
設問の関数式は改行がなくわかりにくいですが、整理すると以下のような感じです。
F(n):
もしnが1以下ならば1を返す、
そうでなければn×G(n-1)の戻り値を返す
G(n):
もしnが0ならば0を返す、
そうでなければn+F(n-1)の戻り値を返す
式"F(5)"を展開していくと次のようになります。
F(5)
引数5が1以下ではないので"5×G(5-1)"→"5×G(4)"を返す
G(4)
引数4が0ではないので"4+F(4-1)"→"4+F(3)"を返す
F(3)
引数3が1以下ではないので"3×G(3-1)"→"3×G(2)"を返す
G(2)
引数2が0ではないので"2+F(2-1)"→"2+F(1)"を返す
F(1)
引数1が1以下なので1を返す
ここからは式を遡ってF(5)の値を求めます。
  • G(2)=2+F(1)=2+1=3
  • F(3)=3×G(2)=3×3=9
  • G(4)=4+F(3)=4+9=13
  • F(5)=5×G(4)=5×13=65
したがって「イ」が正解です。
14.gif

Pagetop