재귀함수(Recursive Function)

Ham S. J·2023년 4월 4일

재귀함수란

함수가 자기 자신을 호출하는 것을 말하며, 일반적으로 다음과 같은 특징을 가집니다.

  • 함수가 자기 자신을 호출하여 작업을 수행하는 방식으로 구현됩니다.
  • 재귀 함수는 일반적으로 base case와 recursive case로 나뉩니다.
    base case는 재귀 호출을 멈추는 조건이고, recursive case는 재귀 호출을 반복하는 조건입니다.

예시 코드

def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n-1)

이 함수에서 base case는 n == 0이고, recursive case는 n * factorial(n-1)입니다.
이 함수를 호출하면, factorial(5)와 같은 형태로 호출할 수 있으며,
이 함수는 5 x 4 x 3 x 2 x 1 = 120을 반환합니다.

setrecursionlimit()

setrecursionlimit()은 Python의 내장 함수 중 하나로,
재귀 함수의 최대 재귀 깊이(recursion depth)를 설정하는 데 사용됩니다.

재귀 함수가 계속해서 호출되면서 호출 스택이 쌓이게 되고, 이것이 일정한 수준을 넘어가면
프로그램이 "최대 재귀 깊이 초과"와 같은 예외를 발생시키면서 종료될 수 있습니다.

이 때, setrecursionlimit() 함수를 사용하여 최대 재귀 깊이의 한계를 늘리거나 줄일 수 있습니다.
이 함수는 파이썬 인터프리터가 사용할 수 있는 최대 재귀 깊이를 변경할 수 있도록 합니다.

하지만, 이 함수를 남용하면 메모리를 많이 사용하게 되거나 무한 루프에 빠질 수 있으므로,
주의해서 사용해야 합니다. 일반적으로는 재귀 함수의 최대 깊이가 너무 깊어지면, 해당 함수를
반복문을 사용하여 구현하거나 다른 알고리즘으로 해결하는 것이 좋습니다.

출처 : https://chat.openai.com/chat

profile
즐겁게 귀엽게 코딩합시다 !

0개의 댓글