Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 递增和递减变量,直到语句为真_Javascript - Fatal编程技术网

Javascript 递增和递减变量,直到语句为真

Javascript 递增和递减变量,直到语句为真,javascript,Javascript,所以我有一个变量,它的取值范围很广,没有办法确定确切的数字,只有一个接近它的数字(大约在未知数字上下50)。让我们假设正确的数字是910(再一次,这个数字变化为大于或小于已经确定的数字),我计算900。我如何编写一个函数来尝试900、899、901、898、902、897……等等,直到它等于未知变量?因为“未知”数字的测试实际上是一个服务器调用,所以不能用简单的循环来完成。相反,您需要异步处理所有事情 var guess = x; var answer = 910; var high = gue

所以我有一个变量,它的取值范围很广,没有办法确定确切的数字,只有一个接近它的数字(大约在未知数字上下50)。让我们假设正确的数字是910(再一次,这个数字变化为大于或小于已经确定的数字),我计算900。我如何编写一个函数来尝试900、899、901、898、902、897……等等,直到它等于未知变量?

因为“未知”数字的测试实际上是一个服务器调用,所以不能用简单的循环来完成。相反,您需要异步处理所有事情

var guess = x;
var answer = 910;
var high = guess;
var low = guess;

while (high !== answer && low !== answer) {
    high++;
    low--;
}

if (high === answer) {
    print high;
} else if (low === answer) {
    print low;
} else {
    print "how did you get here?";
}
下面是一个例子:

//从guess开始,测试该值和附近的整数直到
//guess+maxDelta并向下通过guess maxDelta。
//通过调用testMagicNumber()测试每个数字。此函数
//可以进行Ajax调用或其他异步操作,然后
//应该使用true或false调用传递给它的回调。
//找到匹配项后,使用该值调用回调函数。
//如果没有找到匹配项,则使用false调用回调函数。
函数findMagicNumber(猜测、maxDelta、回调){
变量增量=0,符号=1;
nextNumber();
函数nextNumber(){
var值=猜测+符号*增量;
//日志(‘测试’,值);
testMagicNumber(值、函数(匹配){
如果(匹配){
回调(值);
}
否则{
如果(符号>0)
++三角洲;
符号=-符号;

如果(delta)您可以使用绝对值函数,但它不会按照您指定的顺序进行。您如何将您的猜测与未知数字进行比较?最好使用一些二进制搜索算法来获得更好的结果performanace@Patashu在任何一种情况下,如果你试图搜索一个号码,你仍然需要一个号码来搜索。因此,如果你已经e一个数字那么尝试搜索有什么意义?@Austinizzy那么你本质上是在试图破坏一个web服务?你是一个白帽子还是一个黑帽子?任何一种普通的循环都不起作用,对不起。OP刚才提到搜索的数字只能通过点击服务器来确定,所以它必须是异步ajax代码,带有回调将转到下一个要测试的值。@SimonMcKenzie你是对的,看起来是我必须重新思考我的逻辑;).@MichaelGeary,没错,但如果OP只是在寻找一个算法,这确实回答了这个问题…@SimonMcKenzie-好吧,异步需求确实极大地改变了算法。请参阅我的答案,了解一个工作版本-其中没有任何循环。:-)