【发布时间】:2019-12-03 00:05:41
【问题描述】:
我正在研究二进制搜索,这是我想出的第一件事:
function letsGoBinary(firstArray,array,search){
const middle = Math.floor(array.length / 2);
if(search === array[middle]) {
const rv = firstArray.indexOf(array[middle]);
return rv
}else if(search < array[middle]){
var lowerArray = []
for(var i = 0; i < middle; i++){
lowerArray.push(array[i])
}
letsGoBinary(firstArray,lowerArray, search)
}else if(search > array[middle]){
var forwardArray = []
for(var i = middle + 1; i < array.length; i++){
forwardArray.push(array[i]);
}
letsGoBinary(firstArray,forwardArray,search)
}else {
return -1
}
}
console.log(letsGoBinary([1,4,7,14,16],[1,4,7,14,16], 4))
如果我在第一个 if 语句 (search === array[middle]) 中添加 console.log() 并记录 rv 它会记录确切的值,并且如果我在 else 语句中记录 not found 也会发生同样的情况,它会记录但在记录时letsGoBinary 其值未定义。我该如何解决?
【问题讨论】:
标签: javascript function recursion binary-search