• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

call stack error

20.08.26 21:32 작성 조회수 300

0

똑같이 작성한것같은데 에러가 콜 스택 에러가 나는데 왜  그런걸까요 ...ㅠㅠ

function mergeSort(array){
let arrayLength = array.length;
let result = [];
if(arrayLength <= 1){
return array;
}

let mid = parseInt(array/2);
let firstGroup = mergeSort(array.slice(0,mid));
let secondGroup = mergeSort(array.slice(mid, ))

while(firstGroup.length != 0 && secondGroup.length !=0){
if(firstGroup[0]<secondGroup[0]){
    result.push(firstGroup.shift());
}else{
result.push(secondGroup.shift());
}
}

while(firstGroup.length != 0){
result.push(firstGroup.shift())
}

while(secondGroup.length != 0){
result.push(secondGroup.shift())
}

return result;
}

답변 2

·

답변을 작성해보세요.

0

안녕하세요, AEJEONG님 :)
우선 답변이 늦어진 점 죄송합니다.

AEJEONG님께서 질문 주신 코드 내용을 확인해보니

let mid = parseInt(array/2);

중간값을 구하실 때 배열의 길이(arrayLength)를 2로 나누어야 하는데 배열(array)을 2로 나누어서 생기는 문제로 보입니다.

array/2 -> arrayLength/2 로 수정 후에도 문제가 발생하시거나 충분한 답변이 되지 않았다면 답글 부탁드립니다.
감사합니다. 😊

0

Choi SongA님의 프로필

Choi SongA

2020.09.10

저도 그래요. Shift로 값이 모두 제거되서 undefined 상태로 while문에 들어가는것같은데... 왜이러죠 /