我一直在研究javascript中的算法,可以解决“反向添加”问题。我已经解决了这个问题,它应该可以工作,但是每当我尝试在JSFiddle中运行它时,它就变得毫无响应。我认为可能处于无限循环中,但是我不确定为什么。这是代码:
的HTML
<p id="test"></p>
JAVASCRIPT
var x = 124;
function reverse(n) {
for(var r = 0; n; n = Math.floor(n / 10)) {
r *= 10;
r += n % 10;
}
return r;
}
while(x != reverse(x)) {
x =+ reverse(x)
}
document.getElementById("test").innerHTML = x
最佳答案
下面的代码不断反转变量
while(x != reverse(x)) {
x =+ reverse(x)
}
如果运行
reverse(124)
,将得到421
。如果运行reverse(421)
,将得到124
。现在,让我们看看会发生什么:从
x = 124
开始,我们进入循环:x != reverse(x)
=>
124 != reverse(124)
=>
124 != 421
=>
true
x =+ reverse(x)
=>
x =+ reverse(124)
=>
x =+ 421
=>
x = 421
x != reverse(x)
=>
421 != reverse(421)
=>
421 != 124
=>
true
x =+ reverse(x)
=>
x =+ reverse(421)
=>
x =+ 124
=>
x = 124
回到步骤1。
当您说要解决“反向添加”问题时,我了解到您实际上想添加。
也就是说,
=+
可能是一个错字,而您想要的是+=
。这将把124
反转为421
,然后将其添加为545
,则它不再与反转相反。与Thalaivar explains类似。相反,格式为
x =+ value
的代码在+
上执行一元value
,然后将其分配给x
。