0

I'm almost embarrassed to ask this question but for whatever reason I cannot get this to work. It's a Khan Academy exercise on binary searches. https://www.khanacademy.org/computing/computer-science/algorithms/binary-search/p/challenge-binary-search

Any help would be greatly appreciated! Thanks!

EDIT: I should edit this to say that the error message I'm getting from Khan Academy is "It looks like you almost have the correct condition on the while loop, but something is still wrong with it." It's not incredibly helpful.

/* 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) {
 var min = 0;
 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;
        }
    }
 return -1;
};

var primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 
  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);
wahoowa
  • 45
  • 8
  • @Liam Thank you, I just noticed this answer but not on my initial search for some reason. I simply overlooked making max greater than or equal to min as my while condition. Should I delete this question? – wahoowa Oct 31 '16 at 12:12
  • You should have an option to flag this as a duplicate on the top of this queston (yellow band). If you feel this is a duplicate you can click the option in that – Liam Oct 31 '16 at 12:13

1 Answers1

6

Change this:

while(max > min)

to

while(max >= min)
mvds
  • 45,755
  • 8
  • 102
  • 111