回答編集履歴

1

再帰コード追加

2015/11/01 07:24

投稿

ozwk
ozwk

スコア13521

test CHANGED
@@ -35,3 +35,69 @@
35
35
  > すべての変数の値が常に変更されるのは保守の都合上よろしくない。
36
36
 
37
37
  確かにその通りですが、このコードはそんなに複雑じゃないと思います。
38
+
39
+
40
+
41
+ 変数に再代入が無いように書くとこうなります。
42
+
43
+ ```Ruby
44
+
45
+ class B
46
+
47
+ def binary_search(arr, target)
48
+
49
+ left = 0
50
+
51
+ right = arr.size - 1
52
+
53
+ return binary_search_rec(arr, target, left, right)
54
+
55
+ end
56
+
57
+
58
+
59
+ def binary_search_rec(arr, target, left, right)
60
+
61
+ if(left > right)
62
+
63
+ return false
64
+
65
+ end
66
+
67
+ mid = (left + right) / 2
68
+
69
+ if(arr[mid] == target)
70
+
71
+ return true
72
+
73
+ end
74
+
75
+ if(arr[mid] < target)
76
+
77
+ return binary_search_rec(arr, target, mid+ 1, right)
78
+
79
+ end
80
+
81
+ return binary_search_rec(arr, target, left, mid- 1)
82
+
83
+ end
84
+
85
+ end
86
+
87
+
88
+
89
+ #------------------------------
90
+
91
+
92
+
93
+ find_at = B.new
94
+
95
+ arr = (1..10).to_a
96
+
97
+ puts find_at.binary_search(arr, 9) #true
98
+
99
+ puts find_at.binary_search(arr, 1) #true
100
+
101
+ puts find_at.binary_search(arr, 109) #false
102
+
103
+ ```