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)