HOME»基本情報技術者試験掲示板»サンプル問題 [科目B]問13について
投稿する

サンプル問題 [科目B]問13について [4765]

 今年受験さん(No.1) 
はじめまして。今年受験と申します。

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となります。

判り辛い説明ですが、理解頂けましたか?
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となる。同じ条件に戻るので繰り返し、無限ループになる。
2023.03.08 17:54
 今年受験さん(No.5) 
小福さん、boyonboyonさん
ご回答ありがとうございます。
解決できました!
2023.03.09 09:39
返信投稿用フォームスパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
© 2010- 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop