午前問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を返却します。
よって正解はイです。
①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を返却します。
よって正解はイです。