이제 스택 프레임의 개념을 알았으니 이를 재귀 함수에 적용해 봅시다. RecursionError가 났던 코드 1-1에서 factorial 함수가 자기 스스로를 호출하면 그림 1-2와 같이 스택 프레임이 쌓이게 됩니다. 예를 들어 factorial(3)을 호출했다고 합시다. 그리고 스택 프레임은 아마 그림 1-2와 같이 표현할 수 있을 것입니다.
▲ 그림 1-2 코드 1-1 스택 프레임
그림 1-2를 보면서 왜 코드 1-1이 RecursionError가 나는지 살펴볼까요? factorial(3)을 호출했다면 n*factorial(n-1)에서 n이 3이므로 factorial(2)가 호출될 것입니다. 이 스택 프레임이 그림 1-2에 factorial(2)로 표현되어 있습니다. 이 코드가 실행되면 factorial(1)도 호출될 것이고 그다음에는 factorial(0)이 호출되겠지요. 이때 기저 사례가 없다면 factorial(0)에서 factorial(-1)을 호출할 것입니다. factorial(-2)는 다시 factorial(-3)을 호출합니다. 이 호출을 막을 방도가 없습니다. 다행히도 실제로 실행해 보면 에러가 나면서 실행을 멈춥니다.