2021年 国家一般職(電気・電子・情報) No.37解説

 問 題     

次に示す C 言語で定義される関数 f について、f (2,0,0) が返す値はいくらか。

1.-2
2.4
3.17
4.32
5.81

 

 

 

 

 

正解 (2)

 解 説     

・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/

 

コメント