function arrsort(arr){
return arr.sort(function(a, b){return a - b});
}
const binarySearch=(arr,num,start,end)=>{
arr=arrsort(arr);
start=0;
end=arr.length;
var mid = Math.floor(end / 2);
if (arr[mid] === num) {
return true;
} else if (arr[mid] < num && end > 1) {
binarySearch(arr.splice(mid, Number.MAX_VALUE), num,start,end);
} else if (arr[mid] > num && end > 1) {
binarySearch(arr.splice(start, mid), num,start, end);
} else {
return false;
}
}
答案 0 :(得分:1)
在再次调用同一函数之前,您还需要一些return语句。
在您为每个true
if
语句返回时,您可以省略else
。
function arrsort(arr) {
return arr.sort(function(a, b) {
return a - b;
});
}
const binarySearch = (arr, num, start, end) => {
arr = arrsort(arr);
start = 0;
end = arr.length;
var mid = Math.floor(end / 2);
if (arr[mid] === num) {
return true;
}
if (arr[mid] < num && end > 1) {
return binarySearch(arr.splice(mid, Number.MAX_VALUE), num, start, end);
}
if (arr[mid] > num && end > 1) {
return binarySearch(arr.splice(start, mid), num, start, end);
}
return false;
}