![](/img/trans.png)
[英]Java Binary Search tree method needs to return value instead of print
[英]Binary search method needs to be more efficient
int i = 0;
int finalVal = 0;
while (i < this.maxQuestions) {
if (this.isGreaterThan(average(lowerLimit, upperLimit))) {
lowerLimit = average(lowerLimit, upperLimit);
finalVal = upperLimit;
} else {
upperLimit = average(lowerLimit, upperLimit);
finalVal = lowerLimit;
}
i++;
}
System.out.println("The number you picked was: " + finalVal);
基本上我正在使用布尔值isGreaterThan,
进行二进制搜索isGreaterThan,
问这个数字是否大于x? 您可以回答是或否。 通过使先前的平均值成为新的lowerLimit或upperLimit,可以将每次迭代从lowerLimit到upperLimit的值切成两半。
问题在于,一旦将数组缩小到仅两个或三个值,它将问该数字是否大于x? 多次重复相同的数字,例如:
Is it greater than 56?
是
Is it greater than 57?
没有
Is it greater than 56?
没有
数字是56
我很确定这是因为平均值被四舍五入为整数。 它可以完美地工作到最后,我只是想不出如何缓解最后一个小问题。
我认为您应该有一个lowerLimit == upperLimit的基本情况,如果它只是返回该数字,并且不调用isGreaterThan函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.