재귀함수 advanced
꼬리 재귀 (tail recursion in js)
꼬리재귀란,
재귀 함수를 호출할 때 현재 함수 호출까지의 값을 계산하여 함수를 끝내고 새로운 함수를 호출함으로써 함수 호출로 인한 스택이 쌓이지 않도록(스택을 덮어씌워 재사용 가능) 구현하는 방식이다.
function factorial_tail(num, acc = 1){
if(num < 1) { return acc; }
else { return factorial_tail(num-1, num * acc)}
}
꼬리재귀 코드는 재귀와 달리 현재 함수 실행 결과를 계산한 뒤 매개변수로 필요한 연산을 전달하며, 현재 함수에서 다음 재귀 실행 결과를 이용한 별도의 작업을 수행하지 않는다.
이러한 경우에는 앞으로 현재 실행 컨텍스트를 사용할 필요가 없기 때문에 이를 저장하지 않으며 현재 함수의 스텍 프레임 또한 쌓을 필요가 없다.
(지금 실행한 함수 스택 프레임을 다음 함수가 덮어쓰면서 재사용한다.)
꼬리재귀를 사용하기 위해서는 컴파일러가 이러한 최적화 기능을 지원하는지 확인하여야 한다.
참고)
https://study-ihl.tistory.com/48
재귀 함수와 메모리 사용량 간의 관계 (javascript recursion memory leak)
하노이의 탑 재귀 (js tower of hanoi in recursion)
조합 재귀 함수 (js combination in recursion)
Author And Source
이 문제에 관하여(재귀함수 advanced), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ellie12/재귀함수-advanced저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)