Javascript 汗学院算法挑战:二进制搜索

Javascript 汗学院算法挑战:二进制搜索,javascript,algorithm,binary-search,khan-academy,Javascript,Algorithm,Binary Search,Khan Academy,下面是用JS编写的简单二进制搜索代码。此代码返回-1,而它应该返回20。我环顾四周后所做的事情: 将“while(min

下面是用JS编写的简单二进制搜索代码。此代码返回-1,而它应该返回20。我环顾四周后所做的事情:


  • 将“while(minminrps
    max
    值更改为
    guess

    此外,我建议将
    Math.round
    更改为
    Math.floor

    (小提示:返回后,
    if
    子句已结束,因此不需要使用
    else if

    var doSearch=函数(数组,targetValue){
    var min=0;
    var max=array.length-1;
    var猜测;
    同时(最小值<最大值){
    猜测=数学楼层((最大+最小)/2);
    if(数组[猜测]==targetValue){
    返回猜测;
    }
    if(数组[猜测]log(“在索引“+结果”处找到素数);
    它在最小值和最大值计算中。“+”和“-”信号是相反的

    var doSearch=函数(数组,targetValue){
    var min=0;
    var max=array.length-1;
    var猜测;
    同时(最小值<最大值){
    猜测=数学四舍五入((最大+最小)/2);
    if(数组[猜测]==targetValue){
    返回猜测;
    }else if(数组[猜测]//Program.assertEqual(doSearch(primes,73),20);
    您的代码中只有一个小错误。您应该将min=guess+1更改为min=guess-1

    var doSearch=函数(数组,targetValue){
    var min=0;
    var max=array.length-1;
    var猜测;
    同时(最小值<最大值){
    猜测=数学四舍五入((最大+最小)/2);
    if(数组[猜测]==targetValue){
    返回猜测;
    }else if(数组[猜测]//Program.assertEqual(doSearch(primes,73),20);
    是的!感谢您指出这个小错误,代码确实产生了预期的结果,但我仍然收到一个错误,它说“看起来您在while循环中的条件几乎是正确的,但它仍然有问题。在KhanAcademy1上,让min=0,max=n-1.2.如果max