javascript - 为什么即使我返回一个值,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
提前致谢。
解决方案
你需要一些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
推荐阅读
- .net-core - 为什么 Curve25519 的参数错误,却能正确计算密钥对?
- node.js - 无法使用 npm 安装,无效的 json 响应
- c++ - 从二维数组返回元素(类型错误)
- excel - 无法从按钮单击调用公共子
- javascript - React JS 地图卡片图像
- android - 通过 Intent 在 Snapchat 中共享视频文件
- java - javap -c 没有给我方法的字节码
- javascript - 为什么响应式图像不能以这种方式工作?
- c# - 如何从标有 [return:MaybeNull] 的泛型中正确返回“null”?
- c# - 如何在 C# 中使用 ADO.NET 执行 SQL 命令?