파이썬을 공부하면서 재귀함수에 대해서 알게되었는데
맛이 있지는 않다,,,이건 한 번에 이해가 안됨,,ㅠㅠ
그래서 알게된 내용을 정리하면서 이해해 보려고 한다 !!
def countdown(n):
if n <= 0:
print('발사!')
else:
print(n)
countdown(n-1)
countdown()
함수의 작동 방식은 다음과 같다
n
이 0 이하인 경우: '발사!' 출력n
이 양의 정수인 경우: n
을 출력한 다음 바로 countdown(n-1)
호출n
이 양수인 경우 동일한 함수가 호출되지만 인자가 1 감소하고 결국 n
이 되어 더 이상 함수를 호출할 수 없어 실행이 멈추게 된다. 예를 들어 count(3)
을 호출하면 다음처럼 실행된다.
countdown(3)
# Output
3
2
1
발사!
def count_infinitely(n):
print(n)
count_finitely(n+1)
count_infinitely() # 함수 선언
# Output
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in count_infinitely
File "<stdin>", line 3, in count_infinitely
File "<stdin>", line 3, in count_infinitely
[Previous line repeated 992 more times]
File "<stdin>", line 2, in count_infinitely
RecursionError: maximum recursion depth exceeded while calling a Python object
다음과 같이 에러가 발생하게 된다,,,,
파이썬은 최대 재귀 한도(Maximum recursion depth)
를 정해 허용되는 재귀 호출의 최대 빈도 횟수를 지정하는 특징을 가고 있다.
(* 파이썬 버전과 운영체제 등에 따라 다르며, 필요에 따라 조정도 가능)