Javascript 二进制搜索函数正确,但返回未定义的
我有这个功能来进行Javascript 二进制搜索函数正确,但返回未定义的,javascript,algorithm,binary-search,Javascript,Algorithm,Binary Search,我有这个功能来进行二进制搜索 constbinarysearch=(数组,值)=>{ 设min=0; 设max=array.length-1; 返回双二进制(数组、最小值、最大值、值); }; /** *多比纳里 */ 功能双二进制(arr、min、max、key){ 设med=数学楼层((最小+最大)/2); 设差异=最大-最小; if(arr[med]==键){ console.log(med)/请查看更新的代码,使用递归函数时需要返回doBinary响应 function doBinary
二进制搜索
constbinarysearch=(数组,值)=>{
设min=0;
设max=array.length-1;
返回双二进制(数组、最小值、最大值、值);
};
/**
*多比纳里
*/
功能双二进制(arr、min、max、key){
设med=数学楼层((最小+最大)/2);
设差异=最大-最小;
if(arr[med]==键){
console.log(med)/请查看更新的代码,使用递归函数时需要返回doBinary
响应
function doBinary(arr, min, max, key) {
let med = Math.floor((min + max) / 2);
let diff = max - min;
if (arr[med] === key) {
console.log(med) // <====================== med here is correct, but it returns only undefined
return med; // <========================= problem in this line
/*
* Returns only if the Index of the key that I'm searching for, `equals` the middle of the original array
* otherwise, returns undefined,
*/
}
else if (diff > 0 && arr[med] < key) {
min = med + 1;
return doBinary(arr, min, max, key);
}
else if (diff > 0 && arr[med] > key) {
max = med - 1;
return doBinary(arr, min, max, key);
}
else return -1;
// return med;
}
功能双二进制(arr、min、max、key){
设med=数学楼层((最小+最大)/2);
设差异=最大-最小;
if(arr[med]==键){
console.log(med)//Do在块中返回doBinary(arr、min、max、key)
。