Я почти смущен, чтобы задать этот вопрос, но по какой-то причине я не могу заставить это работать. Это упражнение Академии Хана по бинарным поискам. https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/p/challenge-binary-searchДвоичный поиск с использованием оператора while
Любая помощь была бы принята с благодарностью! Благодаря!
EDIT: Я должен отредактировать это, чтобы сказать, что сообщение об ошибке, которое я получаю от Академии Хан: «Похоже, что у вас почти правильное условие для цикла while, но с ним все еще не так». Это не невероятно полезно.
/* Returns either the index of the location in the array,
or -1 if the array did not contain the targetValue */
var doSearch = function(array, targetValue) {
\t var min = 0;
\t var max = array.length - 1;
var guess;
while(max > min) {
guess = Math.floor((max+min)/2);
if(array[guess] === targetValue) {
return guess;
} else if (array[guess] < targetValue) {
min = guess + 1;
} else {
max = guess - 1;
}
}
\t return -1;
};
var primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37,
\t \t 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97];
var result = doSearch(primes, 73);
println("Found prime at index " + result);
Program.assertEqual(doSearch(primes, 73), 20);
@Liam Спасибо, я только что заметил этот ответ, но не в моем первоначальном поиске по какой-то причине. Я просто упускал из виду, чтобы максимальное или минимальное значение было минимальным как мое условие. Должен ли я удалить этот вопрос? – wahoowa
У вас должна быть возможность отметить это как дубликат в верхней части этого квеста (желтая полоса). Если вы считаете, что это дубликат, вы можете щелкнуть опцию в этом – Liam