1.1.2 스택 프레임으로 재귀 함수 이해하기
처음 재귀 함수를 공부할 때 가장 힘든 점은 어떻게 실행되고 있는 함수가 스스로를 다시 호출할 수 있는가 하는 것입니다. 이런 의문점은 함수가 호출될 때 내부적으로 일어나는 일을 알고 나면 자연스럽게 해결할 수 있습니다.
함수가 호출되면 메모리에서는 스택 프레임이라는 공간이 생깁니다. 이 스택 프레임에는 함수 실행에 필요한 지역 변수들이 할당됩니다. 다음과 같은 간단한 코드가 있다고 하겠습니다.
코드 1-3 stack_frame.py
def add_two(a, b):
c = a + b # 4
return c
a = 10 # 1
b = 20 # 2
result = add_two(a, b) # 3
print(result)
# 1과 # 2는 프로그램이 시작되면서부터 끝날 때까지 메모리에 유지되는 전역 변수입니다. # 3에서 a와 b를 인수로 전달하고 add_two 함수를 호출하면 내부적으로 ‘스택 프레임’이라는 내부 공간이 생기고, 그 공간에 add_two 함수 내부에 있는 매개변수 a, b와 그 결괏값을 담을 지역 변수 c가 저장됩니다. 그래서 코드를 실행하면 30이 출력됩니다.