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