Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我知道如何找到一个中点,但在这段代码中,我不确定如果我们给它加上一个值,它将如何计算中点 private int-mid(int-left,int-right){ 如果(左_Java_Arrays - Fatal编程技术网

Java 我知道如何找到一个中点,但在这段代码中,我不确定如果我们给它加上一个值,它将如何计算中点 private int-mid(int-left,int-right){ 如果(左

Java 我知道如何找到一个中点,但在这段代码中,我不确定如果我们给它加上一个值,它将如何计算中点 private int-mid(int-left,int-right){ 如果(左,java,arrays,Java,Arrays,让我们逐段分析此代码: private int mid(int left, int right) { if (left <= right) return (right - left) / 2 + left; else return (left - right) / 2 + right; } (right-left)是直线的长度;将其除以二,则得到一半的距离。将该值与左值相加,则向右移动了直线长度的一半 return (right - lef

让我们逐段分析此代码:

private int mid(int left, int right) {
    if (left <= right)
        return (right - left) / 2 + left;
    else
        return (left - right) / 2 + right;
}
(right-left)
是直线的长度;将其除以二,则得到一半的距离。将该值与左值相加,则向右移动了直线长度的一半

return (right - left) / 2 + left;

此代码说明了
left
实际上可能大于
right
,这意味着它实际上位于右侧。如果是,则
right
left
的角色将在下一行切换。

另一种分析:

else
    return (left - right) / 2 + right;

如果
left,为什么不省略
left
right
,试着在n,比如说,20和30之间找到中点,看看会发生什么?从20年开始,如果你手工计算,你怎么找到中点?你能用同样的方法编写代码吗?(提示:您可以使用一行代码,而不是
if…else
语句。)从这里我建议比较差异。@code学徒的方法是一种常见做法,当您需要计算值时,应始终使用这种方法。(以及在一般编程中)另一方面,这可能是一个
静态
方法。因此,你的意思是,如果我们正在寻找一个值,它试图做的是我们应该走哪条路。@moalbait是的。即使参数被称为
,也可能有人在
中放置的值比在
中的值更高,其中箱子右边在左边,左边在右边。
else
    return (left - right) / 2 + right;
mid = (left - right)/2 + right 
    = left/2 - right/2 + right 
    = left/2 + right/2 
    = (left + right)/2