function binarySearchTest( arr,findval,leftIndex,rightIndex ){
//找到中间的值
var midIndex = Math.floor((leftIndex+rightIndex)/2);
var midval=arr[midIndex];
//防止无穷递归
if( leftIndex > rightIndex ){
return findval;
}
//进行查找
if( midval > findval ){
//在左边找
binarySearchTest(arr,findval,leftIndex,midIndex-1);
}else if(midval < findval){
//说明往右边找
binarySearchTest(arr,findval,midIndex+1,rightIndex);
}else{
console.log(midIndex)
return midIndex;
}
//找到中间的值
var midIndex = Math.floor((leftIndex+rightIndex)/2);
var midval=arr[midIndex];
//防止无穷递归
if( leftIndex > rightIndex ){
return findval;
}
//进行查找
if( midval > findval ){
//在左边找
binarySearchTest(arr,findval,leftIndex,midIndex-1);
}else if(midval < findval){
//说明往右边找
binarySearchTest(arr,findval,midIndex+1,rightIndex);
}else{
console.log(midIndex)
return midIndex;
}
}
这是个2分法的查找,调用的时候总是return undefined,发现if内的递归没有加上return,记一笔以免忘记