🖼️

4.3.3. 재귀함수

1. 재귀함수(recursion)

내가 나를 호출하여 반복적으로 값을 출력하는 함수입니다. 아래 코드는 실행시키지 마세요! 무한 반복됩니다.
입력
#sys.setrecursionlimit -> 제한을 늘릴 수 있음 def 숫자출력(): print(1) return 숫자출력() 숫자출력()
 
출력
1 1 1 . . . 1 1 1
재귀함수는 반복횟수가 정해져 있어 반복횟수만큼 값이 출력됩니다.
 

1.1. 무한 반복에 종료 조건을 부여

count 변수를 넣어 종료 전까지 증가하게 한 다음, 조건을 하나 부여하여 종료할 수 있도록 설정합니다.
입력
#sys.setrecursionlimit -> 제한을 늘릴 수 있음 def 숫자출력(count): if count > 100: return print(count) return 숫자출력(count+1) #값을 1부터 반복횟수 까지의 값을 출력 숫자출력(1)
 
출력
1 2 3 . . . 95 96 97 98 99 100
 

1.2 factorial 함수

팩토리얼을 재귀함수로 풀어보도록 하겠습니다.
입력
def factorial(n): if n == 1: return 1 else: return n * factorial(n-1) factorial(5) #factorial(5) = 5 * factorial(4)
 
출력
120 #factorial(5) = 5 * factorial(4) = 5 * 24 = 120 #factorial(4) = 4 * factorial(3) = 4 * 6 = 24 #factorial(3) = 3 * factorial(2) = 3 * 2 = 6 #factorial(2) = 2 * factorial(1) = 2 * 1 = 2 #factorial(1) = 1
n의 값이 1이 아니기 때문에 else 구문으로 넘어와서 실행되었고, factorial(1)의 값은 if문에 적합하여 값이 1이 됩니다. 따라서 factorial(n)에 값을 대입하면 팩토리얼 값이 계산되어 120이 출력됩니다.

1.3 재귀함수로 시그마 구현

입력
def 시그마(n): if n == 1: return 1 else: return n + 시그마(n-1) 시그마(100)
 
출력
5050
재귀함수로 표현할 수 있는 값은 반복문으로 구현할 수 있으며, 반복문으로 구현 가능한 구문은 재귀함수로 표현할 수 있습니다.