折半法查找某值并返回在数组中的索引值,有个问题就是如何判断是否溢出?如数据只有1~15,我却搜索115,如何让其不查找?find ? in?
我想到的是findb(arr,mb)<=0 then msgbox("文本不存在") exit sub
但是如何在递归中用递归的方式实现呢。。。
- Function f(arr, mb As Integer, s As Integer, w As Integer) As Integer
-
- Dim temp As Integer
- temp = Int((s + w) / 2)
- If (arr(temp) = mb) Then
- f = temp
- Else
- If (arr(temp) > mb) Then
-
- f = f(arr, mb, s, temp)
-
-
- Else
-
- f = f(arr, mb, temp, w)
-
- End If
- End If
- End Function
复制代码
- Sub a()
- Dim arr
- arr = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
- Debug.Print f(arr, 10, LBound(arr), UBound(arr))
- End Sub
复制代码
|