HOME»基本情報技術者試験掲示板»サンプル問題 [科目B]問13について
投稿する
»[4763] サンプル問題令和 [科目B]問5について 投稿数:13
»[4762] 科目B対策は参考書1冊じゃ厳しいですか? 投稿数:3
サンプル問題 [科目B]問13について [4765]
今年受験さん(No.1)
はじめまして。今年受験と申します。
https://www.fe-siken.com/kakomon/sample/b13.html
上記の問題ですがアもelseにいってしまい無限にmiddleをリターンするように思えてしまうのですが、どなたかわかる方解説いただけますか。
また正解のウの解説もいただけると幸いです。
https://www.fe-siken.com/kakomon/sample/b13.html
上記の問題ですがアもelseにいってしまい無限にmiddleをリターンするように思えてしまうのですが、どなたかわかる方解説いただけますか。
また正解のウの解説もいただけると幸いです。
2023.03.08 14:36
小福さん(No.2)
本問題はちょっと嫌らしいですね。
答えはウです。
要素数は2ですので、high = 2となります。
while内をStep事に実行すると
middleは、lowが1ですので、middle = (1+2)/2、つまり、1 となります。
dataは昇順、且つ、data[2]=target(targetがdataの末尾要素と等しい)ですので、
最初のIfの条件式、data[1]<targetは真となり、low に middleつまり1が代入されます。
つまり、lowとhighの値は全く変化しませんので、このwhile loop は無限loopとなります。
判り辛い説明ですが、理解頂けましたか?
答えはウです。
要素数は2ですので、high = 2となります。
while内をStep事に実行すると
middleは、lowが1ですので、middle = (1+2)/2、つまり、1 となります。
dataは昇順、且つ、data[2]=target(targetがdataの末尾要素と等しい)ですので、
最初のIfの条件式、data[1]<targetは真となり、low に middleつまり1が代入されます。
つまり、lowとhighの値は全く変化しませんので、このwhile loop は無限loopとなります。
判り辛い説明ですが、理解頂けましたか?
2023.03.08 15:26
y4 kさん(No.3)
★FE ブロンズマイスター
この投稿は投稿者により削除されました。(2023.03.08 15:32)
2023.03.08 15:32
boyonboyonさん(No.4)
★FE シルバーマイスター
ア:Low=1,high=1,middle=1なのでdata[1]=targetとなり return 1 ループを抜けます
イ:Low=1,high=2,middle=1なのでdata[1]=targetとなり return 1 ループを抜けます
ウ:Low=1,high=2,middle=1なのでdata[middle]=data[1]<target(=data[2]です)となり
Low←middle(=1)が実行され、Low=1となる。同じ条件に戻るので繰り返し、無限ループになる。
イ:Low=1,high=2,middle=1なのでdata[1]=targetとなり return 1 ループを抜けます
ウ:Low=1,high=2,middle=1なのでdata[middle]=data[1]<target(=data[2]です)となり
Low←middle(=1)が実行され、Low=1となる。同じ条件に戻るので繰り返し、無限ループになる。
2023.03.08 17:54
今年受験さん(No.5)
小福さん、boyonboyonさん
ご回答ありがとうございます。
解決できました!
ご回答ありがとうございます。
解決できました!
2023.03.09 09:39
その他のスレッド
»[4764] 過去問道場(科目A)模擬試験形式で出題について 投稿数:6»[4763] サンプル問題令和 [科目B]問5について 投稿数:13
»[4762] 科目B対策は参考書1冊じゃ厳しいですか? 投稿数:3