오늘은 모던 JavaScript 튜토리얼에서 재귀와 스택(https://ko.javascript.info/recursion)에 대해서 공부했다.
재귀는 하나의 큰 목표 작업을 동일하면서 간단한 작업 여러 개로 나눌 수 있을 때 사용하면 좋다.
가장 처음 하는 호출을 포함한 중첩 호출의 최대 개수를 재귀 깊이라고 부르며, 깊이는 일단 10,000까지 가능하지만 대다수의 엔진이 100,000을 넘길 수 없다.
실행 중인 함수의 실행 절차에 대한 정보는 실행 컨텍스트에 저장된다.
함수 내부에 중첩 호출이 존재하면 다음과 같은 절차로 수행된다.
- 실행 중인 함수가 중지된다.
- 중지된 함수와 연관있는 실행 컨텍스트가 실행 컨텍스트 스택에 저장된다.
- 중첩 호출이 실행된다.
- 중첩 호출이 끝난 이후에 실행 컨텍스트 스택에서 일시 중단한 함수의 실행 컨텍스트를 꺼내오고, 중단한 함수의 실행을 다시 이어간다.
실행 컨텍스트는 메모리 요구사항에 유의해야 한다. 재귀 깊이만큼의 실행 컨텍스트가 저장될 메모리 공간이 필요하기 때문이다.
아직까지 재귀 함수를 사용한 적이 없어서 제대로 공부하는건 이번이 처음이었다. 사용할 일이 없어서 배울 필요가 있을까란 생각이 들어도 중첩 함수의 동작 과정을 실행 컨텍스트 스택이라는 개념과 함께 배울 수 있어서 좋았다.
'TIL' 카테고리의 다른 글
TIL - 20220713 (0) | 2022.07.13 |
---|---|
TIL - 20220712 (0) | 2022.07.12 |
TIL - 20220710 (0) | 2022.07.10 |
TIL - 20220709 (0) | 2022.07.09 |
TIL - 20220708 (0) | 2022.07.08 |