[英]while loop not ending in java even after condition is satisfied in multithreaded popgram
[英]while loop continues even if the condition is not satisfied anymore
public class SumOfTwoNum {
public int[] twoSum(int[] numbers, int target) {
int med = numbers.length/2;
if (numbers[med] > target) {
twoSum(Arrays.copyOfRange(numbers,0,med), target);
}
int remainNum;
int index1 = -1;
int index2 = -1;
while (index1 == -1 && index2 == -1) {
remainNum = target-numbers[med];
if (remainNum > numbers[med]) {
index2 = Arrays.binarySearch(numbers,med,numbers.length,remainNum);
index1 = med;
} else {
index1 = Arrays.binarySearch(numbers,0,med,remainNum);
index2 = med;
}
//here I get index1=0 and index2=1, but the loop doesn't stop
med --;
}
return new int[] {index1, index2};
}
public static void main(String[] args) {
SumOfTwoNum s = new SumOfTwoNum();
System.out.println(Arrays.toString(s.twoSum(new int[] {2,7,11,15},9)));
//what I hope to get here is {0,1}, but it returns {-1,2}
}
}
我想得到两个数字的索引,这两个数字加起来就是目标,但是当它进入循环时,即使 index1 和 index2 都不是-1,它仍然会继续循环
问题是在递归调用之后,你的 function 没有返回,所以循环执行了两次。 这就是为什么即使条件变为假,循环似乎也在执行的原因。
您需要返回递归调用的结果。
if (numbers[med] > target) {
return twoSum(Arrays.copyOfRange(numbers,0,med), target);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.