以下代码似乎无法在列表中找到该号码。为什么会这样?
尝试将数字搜索为'9'并使用由1到10之间的数字组成的数字数组。
array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
count = 0;
function binarySearch(array, number) {
mid = Math.floor(array.length / 2);
if (number === array[mid]) {
return count;
}
else if (number < array[mid] && array.length > 1) {
count++;
arrayFirst = array.splice(0, array[mid]);
console.log("Tried: ", array[mid])
console.log(arrayFirst);
return binarySearch(arrayFirst, number);
}
else if (number > array[mid] && array.length > 1) {
count++;
arraySecond = array.splice(array[mid], array.length);
console.log("Tried: ", array[mid])
console.log(arraySecond);
return binarySearch(arraySecond, number);
}
else {
return 'number doesnt exist';
}
}
console.log(binarySearch(array, 4));
此:
array = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10;
不是数组,它被解释为初始化列表,如下所示:
array = 1, x = 2, y = 3...;
因此您的array
只是1
,而不是整个列表。
相反,这应该是您的数组:
array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
这里的几个指针:
您的条件包括未定义的变量arr
。您一直在使用array
。
您的数组必须为array = [1,2,3]
我建议将变量arrayFirst, mid, arraySecond
实例化为const const mid = ...
编辑:看来您已经修改了arr
条件。请避免进行编辑,因为它会使答案无关紧要。