재귀는 호출을 쌓고, 기저 조건에서 멈춘 뒤 역순으로 풀린다

팩토리얼처럼 입력을 줄이는 재귀는 내려갈 때 호출 프레임을 만들고, 돌아올 때 결과를 합칩니다.

호출이 쌓이는 방향

factorial(5)5 * factorial(4)를 기다림
factorial(4)4 * factorial(3)를 기다림
factorial(3)3 * factorial(2)를 기다림
factorial(2)2 * factorial(1)를 기다림
factorial(1)기저 조건, 1 반환
호출 ↓반환 ↑

반환이 풀리는 방향

1 반환가장 깊은 호출이 먼저 끝남
2 * 1factorial(2)가 2 반환
3 * 2factorial(3)가 6 반환
4 * 6factorial(4)가 24 반환
5 * 24최종 결과 120
기저 조건이 없거나 입력이 줄지 않으면 왼쪽 호출 스택이 끝없이 쌓입니다.