数字的回文 - 没有控制台日志
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 的每个数字。
所以我尝试编写一个代码,从两个(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 的每个数字。