알고리즘&자료구조

[알고리즘] 재귀함수

kinggoddino 2024. 7. 23.

재귀함수 : 자기자신을 다시 호출함

재귀호출되면 그 전의 함수는 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)구조로 쌓임. 두 경우 비교하기