引入:在一个数字猜测游戏中,范围是(0-999),默认指定一个数,假设为640。如果让你从0-999猜数字,猜大猜小都会提示你。那么问题是你怎样才能最快最准的猜出来呢?
折半算法:因为是0-999,我们可以猜测是500,如果我们猜小了,那么肯定在500-999了,这样我们一下子就排除了一半。接下来我们猜测是750,此时会提示你猜大了,那么我们又知道了正确的数字在500-750之间,又排除了一半。以此类推,我们就可以找到正确的答案。
import java.util.Scanner;
public class HalfOfAll {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("请输入你猜的价格");
int price = s.nextInt();
int i = 1;
while(price !=640){
//折半查找法
i++;
if(price > 640){
System.out.println("高了");
System.out.println("请重新猜测:");
price = s.nextInt();
}else if(price < 640){
System.out.println("低了");
System.out.println("请重新猜测:");
price = s.nextInt();
}
}
System.out.println("回答正确,你总共猜了"+i+"次");
}