一、找到数组中间下标,将数组以分为二
二、如果数组中不含有目标值直接返回-1
三、通过比较目标值与数组中间下标的值大小,改变查找范围
四、不断递归,直到目标值与数组中间下标值相等,返回该下标
function searchIdx(arr , target , start , end) {
let mIdx = Math.floor((start + end) / 2)
if(!arr.includes(target)){
return -1
}
while(start <= end){
if(arr[mIdx] < target){
searchIdx(arr,target , mIdx + 1 , end)
}else if (arr[mIdx] > target){
searchIdx(arr , target, start , mIdx - 1)
}else{
return mIdx
}
}
return -1
}
const arr = [1,2,3,465,3,99,14,28];
console.log(searchIdx(arr,88,0,arr.length-1)) // -1
console.log(searchIdx(arr,465,0,arr.length-1)) // 4