Мой лектор попросил нас написать цикл, чтобы попросить пользователя угадать случайное число в 1-100. Когда я тестировал программу, я нашел самый быстрый способ получить правильный номер, всегда угадывая среднее число. Затем мне сказали, что этот способ называется алгоритмом бинарного поиска. Поэтому я подумываю написать другую программу, чтобы компьютер мог угадать случайное число, используя двоичный поиск. Ну, моя программа получит правильный номер, но есть ошибка, которая действительно беспокоит меня, что количество угадываний 1 больше. Может ли кто-нибудь дать мне подсказку?Двоичный поиск номера догадок
class Program
{
static void Main(string[] args)
{
int start = 0;
int end = 100;
Random myRandom = new Random();
int computer = myRandom.Next(start, end);
int count = 1;
int guess;
guess = (end - start)/2 + start;
Console.WriteLine("Computer number: {0}, your guess is: {1}", computer, guess);
Console.WriteLine("Count {0}", count);
while (guess != computer)
{
guess = (end - start)/2 + start;
if (guess > computer)
{
end = guess;
Console.WriteLine("Your guess is too high, next guess: {0}", guess);
}
else
{
start = guess;
Console.WriteLine("Your guess is too low, guess again: {0}", guess);
}
count = count + 1;
Console.WriteLine("Count {0}", count);
}
Console.WriteLine("You got it. The number is {0}. It took you {1} guesses.", computer, count);
Console.ReadKey();
}
}
Это результат, количество должно быть 7 не 8
номер компьютера: 77, ваше предположение: 50
Count 1
Ваше предположение слишком мало, думаю, еще раз: 50
Count 2
Ваше предположение слишком мало, думаю, еще раз: 75
граф 3
Ваше предположение слишком высока, рядом догадка: 87
граф 4
Ваше предположение слишком высока, следующий предположение: 81
графа 5
Ваше предположение слишком высока, следующий предположение: 78
графа 6
Ваше предположение является слишком низким, догадаться снова: 76
Count 7
Ваша догадка слишком низкая, еще раз догадайтесь: 77
Количество 8
У вас есть это. Число 77. У вас было 8 догадок.
Я только что понял, что я должен угадать число внутри «если» и «еще» не снаружи, поэтому проблема решена. Спасибо вам, ребята. – Nelson
Это не проблема. См. Мой ответ, вы угадываете тот же номер дважды, чтобы начать. –