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