我一直在研究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

09-30 11:09