2016-10-13 3 views
1

나는 이것을 거의 풀었다. 프로젝트 오일러의 4th problem이고 대답은 906609라고되어 있지만 580085가 계속된다. 나는 어떤 도움을 주겠다.가장 큰 palindrome 알고리즘 - JS

코드 :

function largestPalin() { 
    var a, b, c; 

    for (a = 999; a > 100; a--) { 
    for (b = a; b > 100; b--) { 
     c = a * b; 
     if (palinCheck(c)) { 
     return c; 
     } 
    } 
    } 

    function palinCheck(c) { 
    return c == c.toString().split("").reverse().join(""); 
    } 

} 

console.log(largestPalin()); 
+3

너무 일찍 돌아옵니다. 가장 높은 제품을 얻는다는 보장은 없으며, 단지 3 자리 요소 중 가장 큰 것이 ('995 x 583 <993 x 913') 가장 큰 것입니다. – Phylogenesis

+0

먼저'a === 999'에 대해'b'의 모든 값을 검사하고 있습니다. 그런 다음'a === 998', 등등에 대한 첫 번째 palindrome은'a == 995, b == 583'입니다. 기본적으로, 당신의 방법은 결함이 있습니다. – Cerbrus

답변

3

당신이 볼 수있는 마지막 하나보다 큰 있다면 대신에 당신이 찾아 첫 번째 결과를 반환하는, 당신이 그것을 저장해야하고 마지막에 반환.

var largestFound = 0; 
for (a = 999; a > 100; a--) { 
    for (b = a; b > 100; b--) { 
     c = a * b; 
     if (palinCheck(c)) { 
      if (c > largestFound) { 
       largestFound = c; 
      } 
     } 
    } 
} 
return largestFound; 
+0

그게 다야, 고마워! :) 나는 999에서 시작하여 루핑을하면 먼저 라지 숫자를 반환한다고 생각했을 것입니다. –

관련 문제