반원 블로그

01d. 재귀호출(순환호출) 본문

2018~/파이썬 자료구조 알고리즘

01d. 재귀호출(순환호출)

반원_SemiCircle 2019. 4. 21. 03:28

재귀호출(순환호출) Recursion

프로그래밍에서 재귀호출이라하면 함수 또는 메소드가 자기 자신을 또 호출하는 형태를 말한다.

이런 재귀 호출은 조심해야한다. 잘못하면 무한 호출이 되기때문이다. 다행이 파이썬에서는 무한 호출이 감지되면 중지시키는 RecursionError가 존재한다. 에러 내용을 보면 재귀 호출이 가능한 범위를 넘어서서 RecursionError를 발생시켜 프로그램을 종료시켰다.

#05Recursion.py

#재귀함수 예시
def aFunc():
    print("호출!")
    aFunc() #자신을 호출

##메인 코드
aFunc()

출력결과

호출!
호출!
....(생략)
호출!
호출!
Traceback (most recent call last):
  File "파일경로/05RecursionF.py", line 9, in <module>
    aFunc()
  File "파일경로/05RecursionF.py", line 6, in aFunc
    aFunc() #자신을 호출
  File "파일경로/05RecursionF.py", line 6, in aFunc
    aFunc() #자신을 호출
  File "파일경로/05RecursionF.py", line 6, in aFunc
    aFunc() #자신을 호출
  [Previous line repeated 993 more times]
  File "파일경로/05RecursionF.py", line 5, in aFunc
    print("호출!")
RecursionError: maximum recursion depth exceeded while calling a Python object

올바른 재귀 호출

재귀 호출을 염두하고 만든 함수는 실행 될 수 있는 재귀의 횟수를 정해놓거나, 함수가 종료될 수 있는 조건이 반드시 있어야 합니다.

 

위키독스 연재 : https://wikidocs.net/book/2868

Comments