【发布时间】:2019-11-04 13:39:50
【问题描述】:
我刚刚完成了简单的 BinarySearch 算法的学习,但让我感到困扰的一件事是,我被告知 break(和 continue)语句在 Java 中通常是多余的,并且您可以在没有它们的情况下使用大多数 while 循环。但我不知道如何从下面的 BinarySearch 循环中摆脱下摆:-
public static void BinarySearch(int[] list, int key){
int lo = 0;
int hi = list.length-1;
int mid = 0;
while(lo<=hi){
mid = lo + (hi-lo) / 2;
if(key<list[mid])
hi = mid-1;
else if(key>list[mid])
lo = mid+1;
else {
System.out.println("Key is found at index = " + mid);
break;
}
if(lo>hi){
System.out.println("Key doesn't exist in the list");
}
}
问题 1:如果我没有包含 break 语句,为什么循环会一直持续下去?变量“lo”不应该最终变得大于“hi”吗?为什么最后一个 if-conditional 可以看到,而 while-loop-conditional 却看不到?
问题 2:如何在不需要 break 语句的情况下键入 while 循环?
【问题讨论】:
标签: java while-loop break infinite