Javascript递归二进制搜索函数

Javascript递归二进制搜索函数,javascript,recursion,Javascript,Recursion,我正在尝试构建一个递归js函数。任何有明确解决方案的人请分享。以下是我所取得的成果 var数组=[0,1,2,3,4,5,6,7,8,9,10,11]; 函数myFunction(项、值、开始、结束){ var mid=数学楼层((起点+终点)/2); while(mid>=0&&start值){ console.log(“内部>”); 返回myFunction(项、值、开始、中间-1); } } 返回-1; } document.getElementById(“demo”).innerHTM

我正在尝试构建一个递归js函数。任何有明确解决方案的人请分享。

以下是我所取得的成果

var数组=[0,1,2,3,4,5,6,7,8,9,10,11];
函数myFunction(项、值、开始、结束){
var mid=数学楼层((起点+终点)/2);
while(mid>=0&&start值){
console.log(“内部>”);
返回myFunction(项、值、开始、中间-1);
}
}
返回-1;
}
document.getElementById(“demo”).innerHTML=myFunction(array,10,0,array.length-1);

到目前为止,您尝试了什么?请详细说明您面临的具体问题。无法使用谷歌?是的,它工作正常,只有一件事。。。我应该在每次迭代后通过splice()方法从数组中删除元素吗?它是否会提高性能。它被称为二进制搜索。搜索不应以任何方式修改数组。您还应该将
while
循环替换为
if
var array = [0,1,2,3,4,5,6,7,8,9,10,11];

function myFunction(item, value, start, end) {
            var mid = Math.floor((start + end)/2);       
    while(mid>=0 && start <= end){
    if(item[mid] === value){
        return item[mid] + " at index "+ mid;
    }
        else if(item[mid] < value){
            console.log("Inside <");
        return myFunction(item, value, mid + 1, end);
    }
        else if(item[mid] > value){
            console.log("Inside >");
        return myFunction(item, value, start, mid - 1);
    }
    }
        return -1;
}
document.getElementById("demo").innerHTML = myFunction(array, 10, 0, array.length -1);