0

雖然試圖解決這個project euler problem(使用開發人員工具中的Google chrome - snippets功能來編碼和執行),但我遇到了一個奇怪的行爲。谷歌Chrome開發者工具在嵌套for循環中不一致

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

上面的代碼應該理想地顯示第一個遇到的迴文的產品,並執行上面的代碼應該break.But顯示一個錯誤的答案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我很想知道爲什麼這很開心效果圖創作?

+0

尋求幫助時,請可讀地縮進代碼。這次我已經爲你做了。 –

+0

謝謝@ T.J。克勞德,會做。 –

回答

0

對於外部循環中的每個k值,內部循環從999減少到100,所以當k是995時,j減少到583找到一個迴文,並且代碼突破了循環。

當你修改J可只倒計時900它沒有達到583,所以你現在到達第一palidrome是993 * 913

+0

謝謝@Jackson。當我發佈這個問題時,它並沒有打動我:) –