2 回答

TA貢獻1877條經驗 獲得超1個贊
你有middle = Math.round(initial + end) / 2;
which 并不總是導致整數。
將其更改middle = Math.round((initial + end) / 2);
為始終獲取整數。

TA貢獻1886條經驗 獲得超2個贊
下面的代碼總是正確的,因此是一個無限循環。
while (found != true && initial <= end)
middle = Math.round(initial + end) / 2;
將代碼放在大括號內
function binarySearch(value, list) {
let initial = 0;
let end = list.length - 1;
let found = false;
let middle;
let position = -1;
while (found != true && initial <= end){
middle = Math.round((initial + end) / 2);
if (value == list[middle]) {
found = true;
position = middle;
} else if (value < list[middle]) end = middle - 1;
else initial = middle + 1;
}
return position;i
}
添加回答
舉報