package main
import "fmt"
// 二分查找递归解法
func BinarySearch(array []int, target int, l, r int) int {
if l > r {
// 出界了,找不到
return -1
}
// 从中间开始找
mid := (l + r) / 2
middleNum := array[mid]
if middleNum == target {
return mid // 找到了
} else if middleNum > target {
// 中间的数比目标还大,从左边找
return BinarySearch(array, target, 0, mid-1)
} else {
// 中间的数比目标还小,从右边找
return BinarySearch(array, target, mid+1, r)
}
}
func main() {
array := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
target := 8
result := BinarySearch(array, target, 0, len(array)-1)
fmt.Println(target, result)
}
10-12
12-14
863
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)