再歸函數
정의 단계에서 자신을 재참조하는 함수
어떤 사건이 자기 자신을 포함하고 다시 자기 자신을 사용하여 정의될 때 재귀적(recursive)이라고 함
함수를 만들고 실행하면 함수가 실행이 완료되기 전까지 호출 스택(CallStack) 이라는 곳에 담김
- 재귀 함수의 요소
1. 종료 조건 = [ if (n == 4) return None ]
2. 실행 로직
3. 재귀 호출 = [ def recursive(n) : recursive(n+1) ]
[ 예시 코드 ]
def A()
def B()
def C():
B() # B가 실행되는 동안 C는 여전히 실행중이다.
return None
# C함수 종료
def D() {
A() # A가 실행되는 동안 D는 여전히 실행 중(스택에 담겨있는 중)이다.
C(); # C가 실행되는 동안 D는 여전히 실행 중이다.
return None
# D함수 종료
}
: 자식의 탐색이 우선이고 부모의 상태는 매번 저장되었다가 자식의 실행이 마치는 대로 부모의 실행이 진행
##### 별 그리기
def recursive(n):
if(n == 4)
return None
for i in range(n)
print("*")
print("\n")
recursive(n + 1)
recursive(1);
# < Result >
# *
# **
# ***
##### 별 역순으로 그리기
def recursive(n):
if(n == 4)
return None
recursive(n + 1) # 탐색을 먼저 호출하여 n = 3일 때까지 모든 함수 호출
# 위 문장 실행 후 Callstack :
# [ recursive(1), recursive(2) ]
for i in range(n) # 탐색이 끝난 뒤 그리기 시작
print("*")
print("\n")
recursive(1);
# < Result >
# ***
# **
# *