인프런 커뮤니티 질문&답변

Nosugar님의 프로필 이미지
Nosugar

작성한 질문수

제주코딩베이스캠프 Code Festival: JavaScript 100제

[정렬] 병합정렬

병합정렬에서 질문드립니다.

작성

·

185

0

그룹하나, 그룹둘의 재귀함수 마지막값이 undefined로 되어서 후에  while문안의 length를 읽어들일수가 없다는 에러메시지가 나옵니다. 어떤부분에서 제가 잘못하고 있는지 잘모르겠네요. 

////////////////////////////////////////////////////////////

function 병합정렬(입력배열) {
let 입력배열의길이 = 입력배열.length;
let 결과값 = [];
if (입력배열의길이 <= 1) {
return 입력배열;
}

let 중간값 = parseInt(입력배열의길이/2);
let 그룹하나 = 병합정렬(입력배열.slice(0, 중간값));
let 그룹둘 = 병합정렬(입력배열.slice(중간값));

console.log("그룹하나:", 그룹하나);
console.log("그룹둘:", 그룹둘);
while (그룹하나.length != 0 && 그룹둘.length != 0) {
if (그룹하나[0] < 그룹둘[0]) {
결과값.push(그룹하나.shift());
} else {
결과값.push(그룹둘.shift());
}
}

while (그룹하나.length != 0) {
결과값.push(그룹하나.shift());
}

while (그룹둘.length != 0) {
결과값.push(그룹둘.shift());
}

}

답변 1

1

재귀함수에는 return 값이 있어야 합니다. 함수의 마지막에 `return 결과값` 을 넣어서 결과를 리턴해주세요. 리턴으로 돌려주는 값이 없기에 undefined가 뜨는 겁니닷

Nosugar님의 프로필 이미지
Nosugar

작성한 질문수

질문하기