Palindrome的一个数字 - 没有控制台日志

时间:2015-07-30 18:49:44

标签: variables numbers palindrome

所以我尝试编写一个代码,从两个(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的任何数字,但我实际上需要检查所有组合......

2 个答案:

答案 0 :(得分:0)

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;
      }
   }
}

答案 1 :(得分:0)

您的帖子有一些问题,以及其中的多个问题。我会尝试磨练主要的东西但是,因为这是一个相当标准的编程101类型的家庭作业问题,我不会立即给你一个确切的答案。

首先,在javascript,=,==和===中有三种不同的'等于'。单个=是赋值运算符,它始终从右到左工作。因此,

    var x = 2;

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

    x*y === z;

有几个问题。首先,它是向后的。其次,它使用===但应使用=。

    z = x*y;

这就是你想要放在这里的东西。

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

    if(x == 2)

这只是检查x的值是否等于值2,但值本身不会改变。

好的,对于你的另一个问题:“数字从100到999,但我实际上需要检查所有组合......”

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

    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.