알고리즘/학습 내용

재귀 함수 (Recursive Function)

개발윗미 2021. 8. 23. 17:45

[재귀 함수란?]

자기 자신을 다시 호출하는 함수이다.

 

[단순한 형태의 재귀 함수 예제]

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