アルゴリズムとプログラミング

基本情報技術者試験 科目A免除 修了試験 20190728 実施分 問8

関数 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
  • エ 527

出典:基本情報技術者試験 科目A免除 修了試験 20190728 実施分 問8

答えと解説を見る

正解:イ

覚える知識

再帰関数のトレース計算

y=0になるまでf(y,x mod y)を繰り返す関数は、xとyの最大公約数を返す。

この問題で必要なこと

f(775,527)→f(527,248)→f(248,31)→f(31,0)=31。最大公約数を求める再帰関数。

ひっかけ

途中の余り(248)や元の値(527)を最終値と取り違える。

この知識の出題:本試験系 8 回・免除試験 11 回(公開問題での観測値)

この知識をアプリで解いて覚える レッスン「再帰呼出しと引数の渡し方」で学ぶ

同じ知識の過去問