请对一个有序数组进行二分查找{1,8,10,89,100,1234},输入一个数看看该数组是否存在次数,并且求出下标,如果没有就提示“没有这个数”【会使用到递归】
package main
import "fmt"
func BinaryFind(arr *[6]int, leftIndex int, rightIndex int, findVal int) {
// 判断leftIndex 是否大于 rightIndex
if leftIndex > rightIndex {
fmt.Println("找不到")
return
}
// 先找到 中间的下标
middle := (leftIndex + rightIndex) / 2
// 调试使用
// fmt.Println(middle)
if (*arr)[middle] > findVal {
// 说明我们要找的数,应该在 middle - 1 --rightIndex
BinaryFind(arr, leftIndex, middle-1, findVal) //通过递归的方式继续查找
} else if (*arr)[middle] < findVal {
BinaryFind(arr, middle+1, rightIndex, findVal) //通过递归方式继续查找
} else {
//找到了
fmt.Printf("找到了,下标为%v", middle)
}
}
func main() {
arr := [6]int{1, 8, 10, 89, 100, 1234}
//测试一下
BinaryFind(&arr, 0, len(arr)-1, 1)
}