함수가 자신을 호출하는 문제 구조를 이해합니다.
재귀는 큰 문제를 같은 형태의 더 작은 문제로 줄입니다. 반드시 종료 조건이 있어야 하며 각 호출이 종료 조건에 가까워져야 합니다. 트리 탐색처럼 구조 자체가 재귀적인 문제에서 자연스럽습니다.
factorial(5)는 5 × factorial(4)를 계산하려고 자신을 다시 부르고, 이 호출은 number가 1이 될 때까지 이어집니다. 1에서 1을 돌려준 뒤 쌓여 있던 호출이 차례로 곱을 완성해 120이 출력됩니다. 음수는 종료 조건에 닿을 수 없으므로 처음에 ValueError로 막아 둡니다.
호출마다 스택 프레임을 사용하므로 깊은 데이터에서는 RecursionError가 발생할 수 있습니다. 단순 반복 계산은 for나 while이 더 안전합니다.
재귀 입력의 최대 깊이를 제한하고 외부에서 들어오는 중첩 데이터가 서비스 자원을 과도하게 사용하지 않도록 방어합니다.
종료 조건을 빼거나 입력이 줄지 않으면 무한 재귀가 됩니다.
직접 바꿔보세요factorial(0)의 결과가 1인 이유를 설명하고 6의 결과를 구하세요.
실행 버튼을 누르면 결과가 여기에 표시됩니다.