0

다음 연습을 수행하려고합니다. 내 코드에 문제가 있지만 무엇인지 이해할 수 없습니다. JavaScript 언어를 사용하여 ArithGeo (arr) 함수가 arr에 저장된 숫자 배열을 가져 와서 시퀀스가 ​​"Arithmetic"문자열을 반환하도록합니다. 기하학적 패턴을 따르는 경우 산술 패턴을 따르거나 "기하학적"을 반환합니다. 순서가 어느 쪽의 패턴에도 계속되는 경우는 -1을 돌려 준다. 산술 시퀀스는 각 숫자의 차이가 일관된 시퀀스입니다. 기하학적 시퀀스에서와 같이 첫 번째 이후의 각 용어에 일정 또는 상수 비율이 곱 해집니다. 산술 예 : [2, 4, 6, 8] 및 기하학적 예 : [2, 6, 18, 54]. 음수가 매개 변수로 입력 될 수 있으며 0은 입력되지 않으며 배열에는 동일한 요소가 모두 포함되지 않습니다. 내 코드 : 나는 [5,10,15], 나는 "에 대한 예기치 않은 토큰"GET과 같은 배열을 넣어배열의 숫자 패턴 감지

function ArithGeo(arr) { 
    if (for (i = 0; i< (arr.length - 2); i++) { 
    arr[i+1] - arr[i] == arr[i+2] - arr[i+1]; 
    }){ 
    return "Arithmetic"; 
    } else if (for (i = 0; i< (arr.length - 2); i++) { 
    arr[i+1]/arr[i] == arr[i+2]/arr[i+1]; 
    }){ 
    return "Geometric"; 
    } else { 
     return -1; 
    } 
}; 

. 어떤 아이디어?

+0

유효하지 않은 구문. http://jshint.com을 참조하십시오. – elclanrs

+0

if 문에 while 루프를 올바르게 삽입하려면 어떻게해야합니까? – user3353840

+0

함수를 만듭니다. 'if'와'for'는 표현식이 아닌 명령문입니다. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements 및 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Expressions_and_Operators를 참조하십시오. – elclanrs

답변

1

코드가 수정되었습니다. 논리를 변경하지는 않았지만 논리를 변경해야합니다.

function ArithGeo(arr) { 
    var ap, gp; 

    for (i = 0; i< (arr.length - 2); i++) 
     if(!(ap = arr[i+1] - arr[i] == arr[i+2] - arr[i+1])) break; 

    if(ap) return "Arithmetic"; 

    for (i = 0; i< (arr.length - 2); i++) 
     if(!(gp = arr[i+1]/arr[i] == arr[i+2]/arr[i+1])) break; 

    if(gp) return "Geometric"; 

    return -1;  
}; 
+0

굉장! 감사! – user3353840

+0

그게 효과가 있다면, 녹색 눈금을 클릭하고 질문을 닫으십시오. – loxxy

0

for 루프의 결과를 얻으려고하는 것처럼 보이지만 루프에는 반환 값이 없습니다. 루프 밖에서 부울 변수 (처음에는 true로 설정)를 정의하고 루프 내에서 수행 한 비교 결과와 AND를 수행하십시오. 루프의 각 반복이 사실이라면 변수는 끝에서 참이됩니다. 예를 들어

:

var test = true; 
for(var i=0; i<5; i++) { 
    test = test && (i != 6); 
} 
if(test) { 
    alert("i was never 6"); 
}