return语句出现问题,总是返回undefined

时间:2019-06-16 10:43:56

标签: javascript

我希望将某些东西作为输出返回,但不能。

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;
 }
  }

我期望输出为true或false。

1 个答案:

答案 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;
}