
재귀 함수는 자신을 실행하는 도중에 자신을 호출하는 함수이다. 이런 개념은 작은 동일한 문제들로 나눌 수 있는 문제를 해결하는데 매우 유용하다. 간단한 예시를 보자.
def countdown(n):
if n <= 0:
print('발사!')
else:
print(n)
countdown(n-1)countdown 함수는 카운트다운을 수행하기 위해 자신을 호출한다. 함수의 인자 n이 0 이하이면 "발사!"를 출력한다. 그렇지 않으면 현재 카운트를 출력하고, 카운트를 1 줄인 채로 자신을 다시 호출한다.
재귀 함수에서는 재귀를 멈추게 하는 조건, 즉 "기저 조건"이 꼭 필요하다. 아래 예시를 살펴보자:
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)여기서, 기저 조건은 n == 0 이다. 이 조건에 도달하면 함수는 1을 반환하고 자신을 더 이상 호출하지 않는다.
프로그램이 함수를 호출하면, 그 함수는 호출 스택의 최상단에 위치한다. 호출 스택은 프로그램의 활성화된 서브루틴들에 대한 정보를 저장하는 스택 데이터 구조이다. 이전에 본 factorial 함수를 인자 3으로 호출하는 경우를 생각해보자:
factorial(3)호출 스택은 다음과 같이 작동합니다:
factorial(3)이 호출 스택에 들어간다.factorial(3)이 factorial(2)를 호출하고, 이것이 스택의 최상단에 위치한다.factorial(2)가 factorial(1)를 호출하고, 이것이 스택의 최상단에 위치한다.factorial(1)이 factorial(0)를 호출하고, 이것이 스택의 최상단에 위치한다.factorial(0)이 기저 조건에 도달하고 반환을 시작한다.각각의 반환은 스택에 있는 바로 아래 함수도 반환하게 만듭니다. 마침내 factorial(3)이 반환되면 스택이 비어집니다.
결론적으로, 파이썬에서 재귀 함수를 이해하고 구현하는 것은 중요한 기술이다. 처음에는 어렵게 느껴질 수 있지만, 연습을 통해 이를 강력한 도구로 활용할 수 있음을 발견하게 될 것이다.
| [Python] 비트 연산자 다양한 예제를 통해 이해하기 |
|---|
| [Python] 관계 연산자 다양한 예제를 통해 이해하기 |
| [Python] 'zsh: command not found: python' 오류 해결하기 |
| [Python] 할당 연산자 다양한 예제를 통해 이해하기 |
| [Python] 산술 연산자 다양한 예제를 통해 이해하기 |

CloneCoding
한 줄의 코드에서 시작되는 혁신!