ROKO

[Python] Recursion limitataion 본문

Computer Science/Programming Language

[Python] Recursion limitataion

RO_KO 2023. 3. 3. 00:05
728x90
# python recursion 형식


# tail recursion 이라고도 부름
def fun():
   '''
   do somethiing
   '''
   return fun()

python으로 코드를 구현할때 특히 Dynamic programming(동적프로그래밍)에서 재귀함수 형태를 사용할때가 있다. pyhton 언어를 공부하다가 알게된 사실인데 Python에는 재귀함수의 반복 횟수가 정해져있다. 그 기준이 call stack기준인지 그냥 하나의 함수자체에서 반복되는 총 개수를 의미하는 것인지는 정확히 모르겠지만 이러한 사실을 알게 되었고 그 기준을 수정하는 방법을 소개하고자 한다.

 

import sys

limit_number = 'num to maximize'
sys.setrecursionlimit(limit_number)

그러면 limit_number만큼 재귀함수의 최대 반복횟수가 늘어나게 된다.

 

여기서 질문이 생긴다. 왜 1000번으로 제한했을까?

 

C/C++에서는 일반적인 재귀함수 형태를 사용할때 Tail recursion optimization기법을 활용해 call stack이 쌓이는 것을 막는다. 간단히 설명하자면 값만 갱신되고 함수의 형태와 구조는 그대로일테니 다음 재귀함수에 입력될 값만 가져와 같은 함수 스택에 넣어 함수 콜스택이 쌓이지 않도록 하는 기법이다.

하지만 python에는 이러한 기능이 구현되어 있지않아 1000번으로 제한을 걸게 된 것이다. 프로그래밍 언어에 관심이 있다면 파이썬 오픈소스에 기여해보는게 어떨까? 구글이나 아마존에서 모셔갈수도..

 

https://www.geeksforgeeks.org/python-handling-recursion-limit/

 

Python | Handling recursion limit - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

 

728x90

'Computer Science > Programming Language' 카테고리의 다른 글

[Python] mutable vs immutable  (0) 2023.03.03
[Python] Container, Sequence  (0) 2023.03.03
[Python] continue / pass / break  (0) 2023.03.02
[Python] Memory management  (0) 2023.03.02
Comments