아래 강의를 듣고 내용을 정리한 포스트 입니다.
https://www.udemy.com/course/best-javascript-data-structures/
이번에는 재귀 솔루션을 작성할때 흔히 발생하는 함정에 대해 알아보도록 하겠습니다.
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 |