問 題
次に示す C 言語で定義される関数 f について、f (2,0,0) が返す値はいくらか。
1.-2
2.4
3.17
4.32
5.81
解 説
・f(2,0,0) は x > y なので
else の方に入って
return f( f(1,0,0) , f(-1,0,2) , f(-1,2,0) ) です。
・まず f(1,0,0) ですが、これは改めてプログラムを読んでいけば
f(1,0,0) は x > y なので
else の方に入って
return f( f(0,0,0) , f(-1,0,1) , f(-1,1,0) ) です。
f(0,0,0) は x = y なので
0 + 0 を return します。つまり、0 を返します。
f(-1,0,1)、及び f(-1,1,0) は x < y なので
それぞれ 0 + 1、1 + 0 を return します。つまり、共に 1 を返します。
以上より
f( f(0,0,0) , f(-1,0,1) , f(-1,1,0) ) は、書き換えれば
f(0,1,1) です。
そして
f(0,1,1) は x < y なので、1 + 1 = 2 を return します。
以上より
f(1,0,0) が 2 をreturn することがわかりました。
ここまで大丈夫でしょうか。
・f(-1,0,2) , f(-1,2,0) は
それぞれ x < y なので、0 + 2 = 2、2 + 0 = 2 を return します。
従って
f(2,0,0) は、書き換えれば
return f(2,2,2) です。x = y なので
2 + 2 = 4 を return します。
以上より、正解は 2 です。
類題 2019 no37
https://yaku-tik.com/koumuin/2019-denjyou-37/
コメント