回答編集履歴

2

ややこしさ修正

2015/11/01 07:14

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -20,7 +20,7 @@
20
20
 
21
21
  Middle = (0 + 9) / 2 = 4
22
22
 
23
- 4にある値は5で,5 < 9なのでLeft = 4 + 1 = 5
23
+ arr[4] = 5 < 9なのでLeft = 4 + 1 = 5
24
24
 
25
25
  ・2回目
26
26
 
@@ -32,7 +32,7 @@
32
32
 
33
33
  Middle = (5 + 9) / 2 = 7
34
34
 
35
- 7にある値は8で,8 < 9なのでLeft = 7 + 1 = 8
35
+ arr[7] = 8 < 9なのでLeft = 7 + 1 = 8
36
36
 
37
37
  ・3回目
38
38
 
@@ -44,4 +44,4 @@
44
44
 
45
45
  Middle = (8 + 9) / 2 = 8
46
46
 
47
- 8にある値は9で,9 = 9なので"Found!"
47
+ arr[8] = 9 = 9なので"Found!"

1

丁寧に追ってみる

2015/11/01 07:14

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -3,3 +3,45 @@
3
3
  つまり,3回目はLeft = 8, Right = 9となり,
4
4
 
5
5
  ifで(8 + 9) / 2 = 8となり,ここで目的の値である9が見つかります.
6
+
7
+ ---
8
+
9
+
10
+
11
+ 1回目から丁寧に追ってみると
12
+
13
+ ・1回目
14
+
15
+ Left = 0
16
+
17
+ Right = 9
18
+
19
+ Left <= Right のため継続
20
+
21
+ Middle = (0 + 9) / 2 = 4
22
+
23
+ 4にある値は5で,5 < 9なのでLeft = 4 + 1 = 5
24
+
25
+ ・2回目
26
+
27
+ Left = 5
28
+
29
+ Right = 9
30
+
31
+ Left <= Right のため継続
32
+
33
+ Middle = (5 + 9) / 2 = 7
34
+
35
+ 7にある値は8で,8 < 9なのでLeft = 7 + 1 = 8
36
+
37
+ ・3回目
38
+
39
+ Left = 8
40
+
41
+ Right = 9
42
+
43
+ Left <= Right のため継続
44
+
45
+ Middle = (8 + 9) / 2 = 8
46
+
47
+ 8にある値は9で,9 = 9なので"Found!"