HOME»基本情報技術者試験掲示板»平成28年春期問9(C)
投稿する

平成28年春期問9(C) [4324]

 さん(No.1) 
プログラムの説明内の(5) 関数exists_atの返却値 判定結果(O:空白文字 1:文字"*")
また、設問3のb,c,dに関する解答群のア:O について
もしかして数字の0(ゼロ)ですか?ずっとアルファベットのO(オー)にしか見えず解説を見ても全く理解が進まなかったのですが…

また同問のdについて、どなたかご教授願いたいです。
過去のスレ[1709]を見てelse if の再帰で最終的に1が返ってくるところまでは理解できたのですがその後遡るところがいまいち理解できず…elseが実行されたならば解答をみるとreturn pat[i % p_rn][j % p_cn];なのでそれ以上遡れなくなるのでは?と考えてしまいます。メモ書きを見る限りは全てreturn 1; つまりd == 0 を満たして最後まで遡れているように見えるのですが…どこの解釈が違うのでしょうか?

またreturnでpatが返るということは要素が返るということでつまり0または1が返却値となるということでしょうか?
2022.05.25 22:47
nsさん(No.2) 
FE シルバーマイスター
>もしかして数字の0(ゼロ)ですか?ずっとアルファベットのO(オー)にしか見えず解説を見ても全く理解が進まなかったのですが…
0(ゼロ)ですね。

>また同問のdについて、どなたかご教授願いたいです。
return 1となるのはd == 0の場合(return [b]が実行される)だけではありません。
elseのブロックが実行された場合、pat配列内の1か所が返るため、ここでreturn 1となる場合もあります。

スレ[1709]のNo2で紹介されているexists_at(1,6,3)の遡り部分を詳しく書いてみます。
○exist_at(0,0,0)
d==0 を満たすため、return [b]、すなわち戻り値は1です。

○exist_at(0,1,1)
exist_at(0,0,0)の戻り値が1のため、== 0を満たしません。
よって、elseのブロックが実行され、return [d]です。
pat[i % p_rn][j % p_cn]の添え字部分を計算すると、pat[0][1]ですので、戻り値は1です。

○exists_at(0,3,2)
exist_at(0,1,1)の戻り値が1のため、== 0を満たしません。
よって、elseのブロックが実行され、return [d]です。
pat[i % p_rn][j % p_cn]の添え字部分を計算すると、pat[0][1]ですので、戻り値は1です。

○exists_at(1,6,3)
exists_at(0,3,2)の戻り値が1のため、== 0を満たしません。
よって、elseのブロックが実行され、return [d]です。
pat[i % p_rn][j % p_cn]の添え字部分を計算すると、pat[1][0]ですので、戻り値は1です。

変数のdと回答欄のdが混ざっていて分かりにくいかもしれませんが、許してください。

>またreturnでpatが返るということは要素が返るということでつまり0または1が返却値となるということでしょうか?
その通りです。
問題文のpat[2][2]={{1, 1}, {1, 0}}であれば、pat[0][0]は1、pat[1][1]は0ということになります。
2022.05.25 23:49
管理人(No.3) 
>もしかして数字の0(ゼロ)ですか?
問題文と選択肢について修正させていただきました。OCRによる変換ミスを見逃してしまったことによる誤植だと思います。
2022.05.26 12:23
 さん(No.4) 
>ns 様
早急に回答解説頂きありがとうございます!!
return 1 で 1 == 0、elseが実行され続け最終的にpat[1][0]で1が返るということなのですね…!
非常に詳しく書いて頂いて分かりやすかったです!ありがとうございます!

>管理人 様
迅速にご対応頂きありがとうございます!
2022.05.26 15:27
返信投稿用フォームスパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
© 2010- 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop