대수 계산기를 작성 중이며 다항식에서 조건을 필터링하는 재귀 함수를 사용하고 있습니다. 아래 함수는 비슷한 용어의 배열을 원하는 배열로 생성한다는 점에서 작동합니다. 함수에 console.log 문을 추가하여이를 확인할 수 있습니다. 그러나 어떤 이유로 인해 함수는 출력을 반환하지 않습니다. "undefined"를 반환합니다.arguments 속성을 사용하는 재귀 Javascript 함수는 정답을 제공하지만 정의되지 않은 값을 반환합니다.
제 생각에 재귀 호출 체인이 아래에 표시된 끝 조건으로 종료되어야하고 스택을 통해 반환 된 인수 [1] 배열을 전달해야합니다.
본인은 하나 이상의 장소에 신고서를 제출하는 것을 잊어 버린 곳에서 비슷한 질문을 읽었습니다. 그러나, 내 코드에서 최종 조건 및 재귀 함수 호출 반환 문이 있습니다. 그것은 아마도 내가 누락 된 단순한 무언가 일 것입니다.
var filterLikeTerms = function (terms) { //takes an array of terms, optional second argument is an array of arrays of similar terms
if (!arguments[1]) arguments[1] = []; //Initilizes the second argument if none is given
if (terms.length == 0) return arguments[1]; //End condition
arguments[1].push(terms.filter(term => terms[0].toString() === term.toString())); //Adds similar terms to the 2nd argument array
terms = terms.filter (term => terms[0].toString() !== term.toString()); //shortens the terms array to exclude the like terms filtered above
return filterLikeTerms(terms, arguments[1]); //recursive function call
}
후 무엇을 'filterLikeTerms'를 호출하고 있습니까? 문자열로 전달되어야하는 속성에서'.toString'을 호출합니다. '7x + 1'을 값으로 전달할 수 없습니다. 그것은 이미 문자열 일 것입니다. 두 번째 메모는 코드가 영리 해 지려고하는 것 같습니다. 한 걸음 뒤로 물러나 간단히 걸 으시고 나중에 최적화하십시오. – VtoCorleone
아마도이 질문을 이해할 수 없지만'console.log (filterLikeTerms ([ 'A', 'B', 'C', 'D']))')'라고하면 배열의 배열을 출력하고 정의되지는 않습니다 .. – bigless
'terms' 매개 변수 하나만 받아들이므로'arguments '매개 변수를 메서드에 전달할 수 없습니다. 나는 당신이 2 개의 매개 변수'filterLikeTerms (terms, arguments)'를 받아들이도록 메소드를 만들 필요가 있다고 생각한다. 예제 입력과 예상 출력과 같이 질문의 이해를 돕는 프로세스의 예가 있습니다. – Eaton