Учитывая, что пользовательский ввод должен быть между 1 и 1000, я пытаюсь использовать двоичный поиск (отсортированный) целочисленного массива 1-1000 для вывода следующего:
введите изображениеописание здесь
Я просто хочу вывод - игнорируйте форматирование.Теперь код:
const testButton = document.getElementById("test");
testButton.addEventListener('click', () => {
myArray = new Array(1000);
for (i = 0; i < 1000; i++) {
myArray[i] = i + 1;
//just for visual aid, not to be actual part of final output
document.getElementById("boop").innerHTML = myArray;
document.getElementById("boop").innerHTML += `<p>${myArray[myArray.length -1]}</p>`;
}
var userInput = parseInt(document.getElementById("input").value);
let min = myArray[0];
let max = myArray[myArray.length - 1];
if (userInput < 1 || userInput > 1000) {
document.getElementById("boop").innerHTML += "That's not between 1 and 1000.";
} else {
while (min < max) {
userInput = parseInt(document.getElementById("input").value);
let min = myArray[0];
let max = myArray[myArray.length - 1];
let mid = myArray[myArray.length - 1];
mid = parseInt(Math.floor(mid / 2));
let count = 0;
if (userInput == mid) {
count++;
document.getElementById("boop").innerHTML += `<p>Guessed ${mid} and got it. Took me ${count} tries.</p>`;
} else if (userInput > mid) {
count++;
document.getElementById("boop").innerHTML += `<p>Guessed ${mid}. Too low.</p>`;
min = mid + 1;
mid = parseInt(Math.floor(mid + (mid / 2)));
} else {
count++;
document.getElementById("boop").innerHTML += `<p>Guessed ${mid}. Too high.</p>`;
max = mid - 1;
mid = parseInt(Math.floor(mid / 2));
}
}
}
});
<html>
<head>
</head>
<body>
<input type="text" id="input">
<button id="test">
Start Game
</button>
<p id="boop">
</p>
</body>
</html>
Если вы хотите связываться с моим JSfiddle, введите описание ссылки здесь
Я не получаюлюбые ошибки консоли при запуске, но кажется, что это бесконечный цикл, потому что мой браузер зависает.Я просмотрел похожие вопросы, и самое похожее, что я могу найти: введите описание ссылки здесь , но он использует Java, и я не изучил Java (все еще довольно плохо знакомый с программированием в целом), поэтомуэто немного сбивает с толку, но я считаю, что это похожая концепция.
Заранее благодарю за любую помощь, которую вы можете предложить!