平成29年 春期 基本情報技術者 午前 問6

関数f (x , y )が次のように定義されているとき、f (775, 527)の値は幾らか。
ここで、x mod y x y で割った余りを返す。

f (x , y ):if y = 0 then return x  else return f (y , x  mod y )

 ア  0  イ  31  ウ  248  エ  727


答え イ


解説
f (775, 527)を計算すると

  • f (775, 527)はy が0でないので、
    f (775, 527) = f (527, 775 mod 527) = f (527, 248)
  • f (527, 248)はy が0でないので、
    f (527, 248) = f (248, 527 mod 248) = f (248, 31)
  • f (248, 31)はy が0でないので、
    f (248, 31) = f (31, 248 mod 31) = f (31, 0)
  • f (31, 0)はy が0なので、
    f (31, 0) = 31
(イ)になる。


キーワード
・再帰的処理

キーワードの解説
  • 再帰的処理(recursive)
    処理(関数)の中で自分自身の処理を呼び出すことです。
    再帰を使用することで、処理を単純に表すことができます。

もっと、「再帰的処理」について調べてみよう。

戻る 一覧へ 次へ