기술 블로그

[TIL]꼬리 재귀 본문

프론트엔드/Javascript

[TIL]꼬리 재귀

jaegwan 2023. 10. 13. 23:35
반응형

일반적으로 재귀함수는 프로그래밍에서 아주 중요한 요소이며 알고리즘으로도 자주 활용되는 기법이다.

 

그러나 프론트엔드 환경에서는 어떨까?

 

이전 게시글에서 봤던 것 처럼 프론트엔드 개발자는 콜스택의 부하를 경계해야하고 여러 문제를 야기한다.

1. 잘못 사용하면 재귀는 스택 오버플로우를 일으키기 좋은 기법이다.

2. 각 함수 호출마다 실행컨텍스트가 생성되기 때문에 메모리 측면에서 좋지 않다.

3. DOM 조작시 성능 저하가 발생할 수 있다.( 매 함수마다 리플로우 리페인팅)

 

이를 방지하기위해 꼬리 재귀라는 기법을 사용할 수 있다.

 

 

//일반 재귀
function factorial(n) {
    if (n === 1) {
        return 1;
    }
    return n * factorial(n-1);
}

//꼬리 재귀
function factorial(n, total = 1){
    if(n === 1){
        return total;
    }
    return factorial(n - 1, n * total);
}

 

반응형

'프론트엔드 > Javascript' 카테고리의 다른 글

[TIL] 클로저  (0) 2023.11.06
[TIL] 깊은 복사  (0) 2023.10.23
[TIL]동기와 비동기  (0) 2023.10.13
상속과 프로토타입  (0) 2023.08.07
js this  (0) 2022.03.09
Comments