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

午前問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
527
『情報処理過去問.com』からiPhoneアプリがリリースされました!!

正解

解説

f(x、y)は再帰関数になっているので順に計算します。

①x = 775、y = 527をそれぞれに当てはめると、
y = 0ではないのでelseのf(y、x mod y)を返却します。
f(775, 527)=f(527, 775 mod 527)
775÷527=1余り248です。

②x = 527、y = 248をそれぞれに当てはめると、
y = 0ではないのでelseのf(y、x mod y)を返却します。
f(527, 248)=f(248, 527 mod 248)
527÷248=2余り31です。

③x = 248、y = 31をそれぞれに当てはめると、
y = 0ではないのでelseのf(y、x mod y)を返却します。
f(248, 31)=f(31, 248 mod 31)
248÷31=8余り0です。

④x = 31、y = 0をそれぞれに当てはめると、
y = 0なので31を返却します。

よって正解はイです。
スポンサーリンク







シェアする

  • このエントリーをはてなブックマークに追加

フォローする