아래 강의를 듣고 내용을 정리한 포스트 입니다.
https://www.udemy.com/course/best-javascript-data-structures/
JavaScript (JS) Algorithms and Data Structures Masterclass
정렬, 리스트, 힙 스택을 포함한 12개의 알고리즘과 10개 이상 자료구조 학습으로 기술 면접 완벽하게 대비!
www.udemy.com
이번에는 재귀 솔루션을 작성할때 흔히 발생하는 함정에 대해 알아보도록 하겠습니다.
1. 종료 조건이 없는 경우
가장 흔한 실수 중 하나는 종료 조건이 없는 경우입니다. 종료 조건이 없으면 콜 스택에 계속 함수가 쌓이게 되고, 'maximum call stack size exceeded' 에러가 발생합니다.
노드의 여부에 따라, 엔진에 따라 최대 스택 크기는 다르지만 일반적으로 1000개 정도의 스택을 쌓을 수 있습니다. maximum call stack size exceeded 에러는 '스택 오버 플로우' 라고도 합니다. 이것은 재귀가 멈추지 않는다는 의미입니다. 종료점이 없기 때문 이죠.
2. 잘못된 값을 반환하거나 반환하는 것을 잊는 경우
예를 들어, 매 재귀 호출마다 더 작은 값을 호출해야 하는데 그렇지 않고 계속 동일한 값에 머물러 있다면 종료 조건이 없는 것과 동일하게 최대 스택 사이즈 초과 문제가 발생할 것입니다.
콜 스택은 모든 항목이 서로에게 의존하면서 계속 기다리는 것으로, 마지막에는 어떤 값을 도출해서 그 값을 반환해야 합니다. 연산 등을 해서 다시 이전 함수로 돌려보내면서, 본래의 함수가 호출했던 값으로 되돌아 갈 때까지 계산을 계속하게 됩니다.
'CS > 알고리즘' 카테고리의 다른 글
[JS 알고리즘 - 재귀5] 순수 재귀 (0) | 2023.05.22 |
---|---|
[JS 알고리즘 - 재귀4] 헬퍼 메소드 재귀 (0) | 2023.04.26 |
[JS 알고리즘 - 재귀2] 재귀 함수의 작성 조건 (0) | 2023.04.22 |
[JS 알고리즘 - 재귀1] 재귀와 콜 스택 의 관련성 이해하기 (0) | 2023.04.22 |
[JS 알고리즘 - 탐색] 분할과 정복 패턴 ( Divide and Conquer ) (0) | 2023.04.10 |