我將C++代碼轉換爲javascript,即here。代碼的其餘部分看起來不錯,但以下功能有問題。首先,while循環內部的第二行拋出錯誤Uncaught ReferenceError: Invalid left-hand side in assignment
。當我將其更改爲m = (A[m] >= key ? r : l);
時,此循環變得無限。 如何在JavaScript中解決它?使用javascript進行二進制搜索
function CeilIndex(A, l, r, key) {
var m;
while(r - l > 1) {
m = l + (r - l)/2;
(A[m] >= key ? r : l) = m; // ternary expression returns an l-value
}
return r;
}