我看过这段代码,应该没问题,我不明白为什么如果“左+右”是奇数,那么“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
和 2
都是整数,因此将执行整数除法,结果也将是一个整数。 Integer division rounds toward 0 ,因此所有小数都被简单地截掉。
public static void main (String[] args) {
int middle = 5 / 2;
System.out.println(middle); // 2
}
关于java - 数组中的小数点位置? ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55446138/