재귀함수 : 자기자신을 다시 호출함
재귀호출되면 그 전의 함수는 Stack에 쌓임.
return을 만나면 본인이 호출되었던 위치로 되돌아감.
▶ print( )가 먼저, 재귀호출이 나중에 있을 때
def recursive_func(n): # 함수선언, n 받아옴
if n == 0: # n = 0 이면
return # 함수 끝
else: # f(5)에서 n=5 이면
print(n, end=' ') # 5 프린트 하고 나서 # 5
recursive_func(n-1) # 재귀호출 f(4), 처음으로 돌아감
# 이어서 f(4): 4 프린트 후 f(3)호출
recursive_func(5) # 5 4 3 2 1
▶ 재귀호출이 먼저, print()가 나중에 있을 때
def recursive_func_1(n): # 함수선언, n 받아옴
if n == 0: # n = 0 이면
return # 함수 끝
else: # f(5)에서 n=5 이면
recursive_func_1(n-1) # 재귀호출 f(4), 처음으로 돌아감
print(n, end=' ') # print(5) 값은 stack 에 쌓이는중
# 함수가 stack 형태로 계속 쌓임(아래부터 f(5),f(4),f(3),f(2),f(1))
recursive_func_1(5) # 1 2 3 4 5
# return에서 맨 마지막꺼부터 프린트됨
▶ 재귀호출은 스택(Stack)구조로 쌓임. 두 경우 비교하기
'알고리즘&자료구조' 카테고리의 다른 글
[알고리즘] 선택정렬, 삽입정렬코드 (0) | 2024.07.24 |
---|---|
[알고리즘] 피보나치 수열, 메모이제이션 (0) | 2024.07.24 |
[알고리즘] 중첩 for문 문제 (0) | 2024.07.22 |
[알고리즘] 버블 정렬(Bubble Sort) (0) | 2024.07.19 |
[자료구조] Linked List 클래스 정의 (0) | 2024.07.18 |