为什么在评估所有内容之前我的for循环停止?

时间:2018-09-16 17:17:33

标签: javascript

我正试图从两个3位数的乘积中得到最大的回文。如果您不知道,回文数就是向前和向后相同的数字(例如:9009或55855等)。

我的方法涉及遍历所有三个数字,如果乘积本身反转,则将它们相乘,然后用该乘积更新变量“回文”。我期望的是906609,但它返回的是99999。

一开始我就绞尽脑汁,没有发现任何问题,但显然有什么问题。有什么想法吗?

//Hoist 'palindrome'
var palindrome = 0;

//Loop through 100 - 1000
for(var i = 100; i < 1000; i++) {

    //Within that loop, loop through 100 - 1000
    for(var k = 100; k < 1000; k++) {

        //Convert product of K & I and reverse to strings
        var product = (k * i).toString(); 
        var reversed = product.match(/.{1}/g).reverse().toString().replace(/,/g, '');

        //If the product and reverse are the same, update palindrome
        if(product === reversed) {
            if(reversed > palindrome) {
                var palindrome = product;
            }
        }
    }
}

//Expecting 906609, but returns 99999
console.log(palindrome)

1 个答案:

答案 0 :(得分:4)

因为

 "99999" > "906609" // true

在比较字符串时,将按词法比较它们。您要比较数字:

 if(+reversed > +palindrome)