数字的回文 - 没有控制台日志

Palindrome of a number - No console log

所以我尝试编写一个代码,从两个(3 个空格长)相乘的数字中找到最大的回文数。我的代码工作正常还是没有回文?

function checkPalindrom(str) {
    return str === str.split('').reverse().join('');
}; //Declares the funciton to check if a string is a palindrome

var x = 999;
var y = 999;
var z = 0;
var n = z.toString(); //Declares that n is the string of z

for (i=0; i<899; i++) { //For loop: counts from 0 to 899
    x*y===z; //Is this correct? z is set equal to x*y
        if(checkPalindrom(n) === true) { //If n is a palindrome,
            console.log(n); //Write out the palindrome
        } else {
            x-=1; //subtract 1 from x and run again
        }
};

此外,检查 3 位数字的所有组合的最佳方法是什么?因为现在我只是检查 100 到 999 之间的任何数字,但实际上我需要检查所有组合...

function checkPalindrom(str) {
    return str === str.split('').reverse().join('');
}; //Declares the funciton to check if a string is a palindrome

var x;
var y;
var z;
var n;
var max = 0;

for (x=999; x >= 100; x--) {
   for (y=999; y >= 100; y--) {
      z = x*y;
      n = z.toString();
      if(checkPalindrom(n) === true && max < z) {
         console.log(n);
         max = z;
      }
   }
}

您的 post 有一些问题,以及其中的多个问题。我会尝试专注于主要内容,但由于这是相当标准的编程 101 家庭作业问题,我不会马上给你一个确切的答案。

首先,javascript里有三个不同的'equals',=,==,===。单个 = 是一个赋值运算符,它总是从右到左工作。因此,

    var x = 2;

将2的值赋给变量x。在您的代码中,

    x*y === z;

有几个问题。首先,它是倒退的。其次,它使用 === 但应该使用 =.

    z = x*y;

这就是您要放在这里的内容。

在javascript中,==和===都是比较级。三元组 === 添加了类型比较并且更强大但通常是不必要的。几乎在所有情况下,== 就足够了。但是,它所做的是比较 if 语句中的值:

    if(x == 2)

这只是检查 x 的值是否等于 2 的值,但值本身并没有改变。

好的,关于你的另一个问题:"number from 100 to 999, but I actually need to check for all combinations..."

处理此问题的最佳方法是双循环:

    var z;
    for(var x = 100; x < 1000; x++)
        for(var y = x; y < 1000; y++)
           z = x*y;

这将首先让 x = 100,然后检查 100 * 从 100 到 999 的每个数字。然后让 x = 101 并检查 101* 从 101 到 999 的每个数字。