【发布时间】:2020-03-25 02:37:35
【问题描述】:
我正在研究如何在 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
提前致谢。
【问题讨论】:
-
缺少退货声明?
-
你没有
return递归的结果。 -
在做了这么多年的javascript之后,我无法理解如果你不返回递归函数的结果,这个函数将返回未定义,一开始并不容易看到但要记住一些事情。