[英]Decimal positions in an array? (Java)
我看過這段代碼,應該很好,我不明白為什么如果“ left + right”是一個奇數,為什么執行“ a [middle] == 0”不會給出錯誤,因為它不會在數組中不存在小數點位置。 謝謝。
/** Searches the value 0 within a[left..right].
* Precondition: 0 <= left, right < a.length,
* a[left..right] is sorted in ascending order. */
public static int intercepts(double[] a, int left, int right) {
if (left > right) { return -1; }
else {
int middle = (left + right) / 2;
if (a[middle] == 0) { return middle; }
else if (a[middle] > 0) {
return intercepts(a, left, middle - 1);
} else {
return intercepts(a, middle + 1, right); }
}
}
由於兩個操作數( left
和right
)是整數,因此使用整數算術。 應用除法后,結果的其余部分將“舍入”為零。
例
5/2 = 2
7/3 = 2
8/3 = 2
請參閱以下文章,以獲得更好的解釋。 整數除法:為什么1/3 == 0的結果?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.