나의 공부 일기

Python) 재귀함수(Recursive Function) 본문

파이썬/파이썬 정리

Python) 재귀함수(Recursive Function)

곽병권 2023. 10. 15. 15:39
728x90

재귀함수는 함수 내에서 자기 자신을 한번 더 부르는 함수를 말합니다.

재귀함수에는 직접재귀와 간접재귀가 있습니다.

 

재귀함수는 가장 기본적으로 

def recursive():
    print('재귀')
    recursive()

recursive()

이런 형식으로 생겼고 지금 이 함수를 실행하면 스택 오버플로우가 발생합니다.

RecursionError: maximum recursion depth exceeded while calling a Python object

 

 

이 스택 오버플로우가 발생하지 않도록 탈출구를 만들어야 합니다.

조건문으로 return을 넣어 특정 값이 나오면 탈출하도록 말이죠


 

재귀함수가 어떻게 돌아가는가의 대한 예시 입니다.

value = 0
def recursive():
    global value
    print('\t'*value, end='')
    print(f'[value: {value}]')
    if value == 3:
        print('\t'*value,value, 'Function End!')
        return
    value += 1
    recursive()
    value -= 1
    print('\t'*value, value,'Function End!')

recursive()
------------#결과------------
[value: 0]
        [value: 1]
                [value: 2]
                        [value: 3]
                         3 Function End!
                 2 Function End!
         1 Function End!
 0 Function End!
 
 

이런식으로 결과가 나오게 됩니다. 특정값에 return을 넣으면 다시 거꾸로 출력이 되도록 말이죠.

 

 

여기까지 재귀함수에 대하여 간단하게 정리해보았습니다.

많이 헷갈리는 함수지만 파이썬에서는 거의 안쓰인다고 합니다. 하지만 그래도 알고는 있어야하니

"나는 이건 포기해야겠다." 라는 마인드는 갖지말고 이해는 하고 넘기도록 합시다.

 

728x90

'파이썬 > 파이썬 정리' 카테고리의 다른 글

Python) random(난수) 랜덤한값을 가져온다  (0) 2023.10.16
Python) 람다함수(Lambda)  (0) 2023.10.15
Python) 지역변수, 전역변수  (0) 2023.10.15
Python) 가변인자  (0) 2023.10.13
Python) 함수(def)  (0) 2023.10.13