在尝试解决这个项目的 euler 问题(使用 Google chrome - 开发人员工具中的代码片段功能进行编码和执行)时,我遇到了一个奇怪的行为。
var palFound = false;
isPal = function (word) {
var wordCount = word.length;
for (i = 0; i < wordCount; i++) {
if (word[i] != word[wordCount - i - 1]) {
return false;
}
}
return true;
}
for (var k = 999; k >= 100; k--) {
for (var j = 999; j >= 100; j--) {
var prod = k * j,
prodString = prod + '';
if (isPal(prodString)) {
console.log(prod, k, j);
palFound = true;
break;
}
}
if (palFound) {
break;
}
}
理想情况下,上面的代码应该显示第一个遇到的回文产品并且应该中断。但是当执行上面的代码时,会显示错误的答案 580085,它是 995 和 583 的乘积。
但是当 for 循环限制更改为 999 到 900(如下所示)时,会显示正确答案 - 906609,它是 993 和 913 的乘积。
for(var k=999;k >=900;k--){
for(var j=999;j>=900;j--)
理想情况下,应该首先遇到 993 和 913,而不是 995 和 583。我很想知道为什么会发生这种情况?