gpt4 book ai didi

javascript - 二进制搜索 - javascript - 为什么数组中的最后一项导致超出最大调用堆栈?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:28:28 24 4
gpt4 key购买 nike

写这篇文章是为了尝试构建一个二进制搜索。它绝不是重构最多的代码,但想知道为什么除了 X 是数组中的最后一个值(即 x = 77)之外一切正常?

function binary_search(x, arr) {
var len = arr.length - 1 //because index starts at 0
var min = arr[0]
var max = arr[0]
var new_arr = []

if(x < arr[0] || x > arr[len])
//console.log(arr[len])
console.log (x + " is not within array range.")
else
find_x(x, arr)


function find_x(x, arr) {
var mid = Math.floor(arr.length/2) //takes care of odd numbered elements in array

if (x === arr[mid])
console.log("Found " + x)

else if(x < arr[mid])
{
max = arr[mid]
new_arr = arr.slice(0, mid)
find_x(x, new_arr)
}
else if(x > arr[mid])
{
min = arr[mid]
new_arr = arr.slice(mid, len)
find_x(x, new_arr)
}
else
console.log(x + " is not in array.")
}
}

var arr = [1,12,43,55,66,77]
binary_search(77, arr)

最佳答案

var len = arr.length

没有-1,否则你切断了最后一个元素

Zero-based index at which to end extraction. slice extracts up to but not including end.

发现了一个 google chrome 调试器 - 你应该有一天尝试一下

JSFiddle:http://jsfiddle.net/HC6yL/

引用资料:

关于javascript - 二进制搜索 - javascript - 为什么数组中的最后一项导致超出最大调用堆栈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21321971/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com