所以我有一个变量,范围内的值,没有办法确定确切的数字,只有一个接近它的数字(大约50以上或以下未知的数字)。假设正确的数字是910(同样,这个数字大于或小于已经确定的数字),我计算900。我如何编写一个函数来尝试900, 899, 901, 898, 902, 897...等等,直到它等于未知变量?
因为“未知”号码的测试实际上是一个服务器调用,所以不能用简单的循环来完成。相反,您需要异步处理所有事情。
这里有一个例子:
// Starting with guess, test that value and nearby integers up through
// guess+maxDelta and down through guess-maxDelta.
// Each number is tested by calling testMagicNumber(). This function
// can make an Ajax call or other asynchronous action, and then it
// should call the callback passed to it with true or false.
// When a match is found, call the callback function with that value.
// If no match is found call the callback function with false.
function findMagicNumber( guess, maxDelta, callback ) {
var delta = 0, sign = +1;
nextNumber();
function nextNumber() {
var value = guess + sign*delta;
//console.log( 'Testing', value );
testMagicNumber( value, function( match ) {
if( match ) {
callback( value );
}
else {
if( sign > 0)
++delta;
sign = -sign;
if( delta <= maxDelta )
nextNumber();
else
callback( false );
}
});
}
}
// Test version of a magic number matcher, using a hard coded value
function testMagicNumber( value, callback ) {
callback( value == magic );
}
// Untested example of a function to test a magic number
// with a server request. isMagic(result) is whatever test
// you need to make on the result to get a boolean value
// for the callback.
function testMagicNumberAjax( value, callback ) {
$.ajax({
url: 'test',
data: { value: value },
error: function() {
callback( false );
},
success: function( result ) {
callback( isMagic(result) );
}
});
}
for( var magic = 45; magic <= 55; ++magic ) {
console.log( 'Magic number is', magic );
findMagicNumber( 50, 3, function( result ) {
console.log( 'Matched', result );
});
}
这需要猜测50,最大增量上下为3,并测试45到55之间的幻数。
记录的结果是:
Magic number is 45
Matched false
Magic number is 46
Matched false
Magic number is 47
Matched 47
Magic number is 48
Matched 48
Magic number is 49
Matched 49
Magic number is 50
Matched 50
Magic number is 51
Matched 51
Magic number is 52
Matched 52
Magic number is 53
Matched 53
Magic number is 54
Matched false
Magic number is 55
Matched false
testMagicNumber()
函数是进行Ajax调用以命中服务器的地方。当您从调用中得到响应时,testMagicNumber()
应该用true
或false
调用它的回调
函数参数来指示数字是否匹配。在上面的testMagicNumberAjax()
中有一个示例(未经测试的)Ajax版本。
您可以将上面的代码粘贴到Chrome控制台中进行快速测试;更改magic
的值以尝试不同的数字。
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?";
}
问题内容: 好吧,对于我正在做的事情,我需要增加变量名称,例如,int Taco1 = 23432 ..... int Taco2 = 234235656 ..... int Taco3 = 11111 ....... 但是我需要它是一个像 尝试让我的变量名每次自动递增1,这样它们就不会覆盖自己。如果这不可能,那么我深表歉意。 问题答案: 您不能用Java做到这一点,更重要的是,您不想这样做,因为
问题内容: 我注意到,可以将预增减运算符应用于变量(例如)。它可以编译,但实际上并不会改变变量的值! Python中预增/减运算符(++ /-)的行为是什么? 为什么Python会偏离C / C ++中看到的这些运算符的行为? 问题答案: 不是运算符。它是两个运算符。该运营商的身份运营,这什么都不做。(澄清:和一元运算符仅对数字起作用,但是我假设你不会期望假设的运算符对字符串起作用。) 解析为 转
问题内容: 有什么方法可以将R中的已定义变量传递到sqldf包中的SQL语句? 我必须运行下面的代码,并将“ v”变量传递给sql select语句为“ $ v” 尽管运行,但返回错误结果。[结果应为1000,但此代码返回0]。 因此,我认为它不会传递变量值。 问题答案: 如果v是一个整数,则您不想用单引号将$ v括起来-这使它成为字符串值。尝试不使用单引号。
本文向大家介绍关于Java中递增和递减运算符的有趣事实,包括了关于Java中递增和递减运算符的有趣事实的使用技巧和注意事项,需要的朋友参考一下 关于Java中的递增和递减运算符,有许多有趣的事实。我们将通过示例讨论其中的一些- 增量和减量运算符不能与'final'变量一起使用。这是由于与'final'关键字相关联的变量无法更改的事实- 示例 输出结果 无法嵌套'++'和'--'运算符。 示例 输出
C++ 重载运算符和重载函数 递增运算符( ++ )和递减运算符( -- )是 C++ 语言中两个重要的一元运算符。 下面的实例演示了如何重载递增运算符( ++ ),包括前缀和后缀两种用法。类似地,您也可以尝试重载递减运算符( -- )。#include <iostream> using namespace std; class Time { private: int hours; // 0 到
问题内容: 首先,我会说我对AngularJS很陌生,所以如果我的心态还差得远,请原谅我。我正在使用AngularJS编写一个非常简单的单页报告应用程序,当然,肉和土豆也使用了角度模板系统来自己生成报告。我有许多报告要从类似Jinja的语法转换过来,并且很难复制任何类型的计数器或运行制表功能。 例如 在我的控制器中,我定义了一个变量,这样我就可以毫无问题地访问模板内部。我还不太清楚是如何从一个元素