A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
入力データが取引先コード 1000 だった場合、ループ 2 の動作は
Mid = Floor((0 + 19) / 2) = 9
ループ判定 → まだ見つからないので続行
Jogen = 9 - 1 = 8
Mid = Floor((0 + 8) / 2) = 4
ループ判定 → まだ見つからないので続行
(中略)
ループ判定 → まだ見つからないので続行
Jogen = 0 - 1 = -1
Mid = Floor((0 + -1) / 2) = -1
ループ判定 → 探索範囲を外れたので終了
Jogen <= Kagen でない状態で計算した Mid の値は、
配列の範囲外になってしまう可能性があります。
そのためループ後に Sco(Mid) = Tco を実行すると、
上記例の場合に Sco(-1) と評価され範囲外参照のエラーになります。
ループ終了条件は以下の二通りだけなので
ループ後ならば Jogen ≦ Kagen だけ評価すれば、
見つかったか否かを判断ができます。
1) Jogen ≦ Kagen かつ Sco(Mid) = Tco
→ 探索範囲内に値が見つかった
2) Jogen > Kagen
→ 探索範囲外になったのでもう探しても無駄
余談ではありますが、
ループ条件が "Jogen ≦ Kagen かつ Sco(Mid) ≠ Tco" なので、
Mid=-1 だとエラーになるのではと不安になりますが、
「先に記述された条件式が偽になった時点で、判定を終了する」
と注記があり、短絡評価をしているから間違いではないと言いたい様です。
参考)
https://ja.wikipedia.org/wiki/%E7%9F%AD%E7%B5%A1 …
ですが (4) の条件を考えると、些か配慮が足りない出題だと感じました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
UWSCの終了の仕方
-
DoEventsが必要な理由について
-
Do whileでExitせず、ループの...
-
VBA for i=1 to lastrow
-
Escキーを押すと、中断する時と...
-
Javaでゲーム
-
テキストボックスの名前に変数...
-
Excel VBAで、アクティブシート...
-
VBAで3秒だけ時間を止めたい
-
VBA for文が止まらない
-
null 参照の例外が実行時に発生...
-
CSVファイルの特定の行だけを読...
-
vb.netからエクセル関数書き込み
-
多重ループの抜けだし方
-
VBAでの一時停止と再開の方法
-
アクティブセルから、A列最終行...
-
範囲指定したセルを1つずつ飛...
-
csh foreachで「*」でエラ...
-
ループからの抜け出し方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UWSCの終了の仕方
-
画面を強制的に再描画させる方法
-
VBAで3秒だけ時間を止めたい
-
Escキーを押すと、中断する時と...
-
DoEventsが必要な理由について
-
VBAでの一時停止と再開の方法
-
DOSコマンドのループ内のTIMEコ...
-
範囲指定したセルを1つずつ飛...
-
GIFアニメをループさせたくない
-
VBA for i=1 to lastrow
-
乱数の桁数指定、または範囲指定。
-
ループフリー
-
vb.netからエクセル関数書き込み
-
エクセル関数で1〜12の数字がル...
-
vbscriptでIE自動入力(途中で...
-
null 参照の例外が実行時に発生...
-
アクティブセルから、A列最終行...
-
Do whileでExitせず、ループの...
-
UWSCに制限時間を付けたいです
-
CSVファイルの特定の行だけを読...
おすすめ情報