[英]Binary search using javascript
我正在將C ++代碼轉換為此處的 javascript。 其余代碼看起來不錯,但以下函數有問題。 while循環中的第一行,第二行引發錯誤Uncaught ReferenceError: Invalid left-hand side in assignment
。 當我將其更改為m = (A[m] >= key ? r : l);
然后這個循環變成無限。 如何在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;
}
if (A[m] >= key) {
r = m;
} else {
l = m;
}
除屬性外,JavaScript不能具有可變的左值(即,可以執行obj[A[m] >= key ? 'r' : 'l'] = m
,但不建議您這樣做)。
您只需要適當地突破左側即可。 我不知道您要做什么,但是假設您要為r
或l
分配m
:
if (A[m] >= key) {
r = m;
} else {
l = m;
}
在JavaScript中,您可以改為:
A[m] >= key ? r = m : l = m;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.