
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で質問しましょう!
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
一巡伝達関数と開ループ伝達関数
-
エクセルVBAで
-
既存のBBSに返信機能の追加
-
画面を強制的に再描画させる方法
-
CやJAVa,Rubyなどプログラミン...
-
レインボー色ってどうやって表...
-
C言語でファクト関数を使わずに...
-
システム安定性(ゲイン余裕/...
-
イベントの発生を待つ
-
ごめんなさい 応用てきだとおう...
-
配列にaaaからzzzまでの17576(2...
-
GIFアニメをループさせたくない
-
UWSCの終了の仕方
-
jcode->jfold で禁則処理
-
二次元配列のつかいかた。
-
マクロ Publicでの配列定義
-
クラスに配列を渡す方法
-
yychatのcokkie機能がおかしく...
-
なんでハッシュ関数はユーザー...
-
英語でのシャープとコメの呼び...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
UWSCの終了の仕方
-
CSVファイルの特定の行だけを読...
-
範囲指定したセルを1つずつ飛...
-
UWSCに制限時間を付けたいです
-
Escキーを押すと、中断する時と...
-
乱数の桁数指定、または範囲指定。
-
VBA for i=1 to lastrow
-
流れ図(フローチャート)が分か...
-
DOSコマンドのループ内のTIMEコ...
-
pythonでファイルのコメント行...
-
素数表について。
-
VBAでの一時停止と再開の方法
-
「偶数・奇数の和」のフローチ...
-
DoEventsが必要な理由について
-
vb.netです。2次元配列の要素を...
-
Do whileでExitせず、ループの...
-
ループフリー
-
エクセルの当番表を作っていま...
-
VBAで3秒だけ時間を止めたい
おすすめ情報