<script>
function DM(x){
document.write(x)
}
</script>
</head>
<body>
<script>
var low = 0;
var high = 500;
var found = false;
var indexB = 0;
var rooterArray= [];
var squaryness = true
for(index=1;index<500;index++){
var holder = index * index;
rooterArray[index-1] = holder;
};
var isSquare = parseFloat(prompt("enter a number less then 250000"));
while(low < high && !found){
indexB=(low + high)/2;
indexB = Math.floor(indexB)
if(rooterArray[indexB] == isSquare){
found = true;
document.write("Match was found subscript: "+indexB);
}
else{
if(rooterArray[indexB] > isSquare){
high = indexB - 1;
}
else{
low = indexB + 1;
}
}
}
if(!found){
document.write("dude obv not a perfect square");
}
</script>
代码只是为了检查您输入的数字是否是一个完美的正方形,并通知您使用二进制搜索和数组,但只会显示“抱歉,找不到值” 编辑:略有变化,随机的工作正常,而其他人没有,认为它可能与math.floor有关但不是100% 就我的测试而言,1件作品,4件,不是9件作品,16件不是,25件作品,36件不是,所以看起来连数字都不起作用。 我创建了一个运行while循环的函数,创建了第二个数组,但是从索引0开始使用for循环,并且它起作用但它有点恶心,它引发了两个问题,索引不准确,因为例如,4和1都具有相同的索引,如果它不是一个完美的正方形,它就不会写任何东西
答案 0 :(得分:3)
在while
循环中,继续条件应为low <= high && !found
而不是low < high && !found
。