[재귀 함수란?]
자기 자신을 다시 호출하는 함수이다.
[단순한 형태의 재귀 함수 예제]
def recursive_function() :
print('재귀 함수 호출')
recursive_function()
recursive_function()
[재귀 함수의 종료 조건]
재귀 함수를 문제 풀이에서 사용할 때에는 재귀 함수의 종료 조건을 반드시 명시해야 한다.
종료 조건을 제대로 명시하지 않으면 함수가 무한히 호출될 수 있다.
[종료 조건을 포함한 재귀 함수 예제]
def recursive_function(i) :
# 100번째 호출 했을 때 종료
if i == 100 :
return
print(i, '번째 재귀함수에서', i + 1, '번째 재귀함수를 호출')
recursive_function(i + 1)
print(i, '번째 재귀함수 종료')
recursive_function(1)
[재귀 함수를 이용한 팩토리얼 구현 예제]
def factorial_recursive(n) :
if n <= 1 :
return 1
return n * factorial_recursive(n - 1)
print(factorial_recursive(5))
[재귀 함수 사용 시 유의점]
① 모든 재귀 함수는 반복문을 이용하여 동일한 기능을 구현할 수 있다.
② 재귀 함수가 반복문보다 유리한 경우도 있고 불리한 경우도 있다.
③ 컴퓨터가 함수를 연속적으로 호출하면 컴퓨터 메모리 내부의 스택 프레임에 쌓인다.
그렇기 때문에 스택을 사용해야 할 때 구현상 스택 라이브러리 대신에 재귀 함수를 이용하는 경우가 많다.
출처
이것이 코딩 테스트다 with 파이썬 - 나동빈 저
'알고리즘 > 학습 내용' 카테고리의 다른 글
[파이썬] 순차 탐색과 이진 탐색 (0) | 2021.08.27 |
---|---|
정렬 알고리즘 (0) | 2021.08.25 |
[파이썬] collections 모듈(deque, Counter) (0) | 2021.08.09 |
[파이썬] heapq (0) | 2021.08.09 |
[파이썬] 리스트 기본 메서드 (0) | 2021.08.09 |