首页 > 解决方案 > 为什么即使我返回一个值,javascript递归函数也会返回“未定义”

问题描述

我正在研究如何在 javascript 函数中实现二进制搜索,并发现当我返回值并将其保存到变量中时,当我 console.log 时,这是未定义的。

const recursiveBinarySearch = (numbers, target) => {
    const midpoint = Math.floor(numbers.length / 2);

    if (numbers[midpoint] === target){
        //it does found the value and return
        return 'FOUND';

    } else if(numbers[midpoint] < target) {
        recursiveBinarySearch(numbers.slice(midpoint+1), target);

    } else {
        recursiveBinarySearch(numbers.slice(midpoint-1), target);

    }
}
var result = recursiveBinarySearch([1, 2, 3, 4, 6, 8, 100] , 8);
console.log(result); // Here is returning undefined

提前致谢。

标签: javascriptbinary-search

解决方案


你需要一些return陈述。您也可以省略这些else语句,因为如果返回,它不会执行该else部分。

const recursiveBinarySearch = (numbers, target) => {
  const midpoint = Math.floor(numbers.length / 2);

  if (numbers[midpoint] === target) {
    //it does found the value and return
    return 'FOUND';

  }

  if (numbers[midpoint] < target) {
    return recursiveBinarySearch(numbers.slice(midpoint + 1), target);
  }

  return recursiveBinarySearch(numbers.slice(midpoint - 1), target);
}
var result = recursiveBinarySearch([1, 2, 3, 4, 6, 8, 100] , 8);
console.log(result); // Here is returning undefined


推荐阅读