Recursive Call

재귀 함수는 작은 문제와 종료 조건으로 자기 자신을 호출한다

재귀는 문제를 더 작은 같은 모양의 문제로 줄이고, 더 이상 나누지 않는 base case에서 멈춘다.

재귀 구조

call stack

종료 조건

반드시 도달 가능한 base case가 있어야 무한 호출을 막는다.

재귀 단계

팩토리얼처럼 n을 n-1 문제로 줄여 같은 함수를 다시 호출한다.

스택 비용

각 호출은 프레임을 쌓으므로 깊이가 크면 스택 오버플로를 주의한다.

문제baserecursivereturn
읽는 법

재귀를 읽을 때는 전체 호출을 머릿속으로 펼치기보다, 종료 조건과 한 단계 축소가 맞는지 확인하는 편이 안전하다.