나는 원칙적으로 재귀 함수를 반복 함수로 변환하는 것이 가능하다는 것을 읽었습니다. 나는 서로에게 전화하는 몇 가지 기능이 있습니다. 내 플로우 차트를 보면서 코드의 구조를 만들었고 재귀 스타일로 처리하는 것이 분명했습니다. 작은 크기의 문제에는 적합하지만 더 큰 규모에서는 세그먼트 오류가 발생합니다. 그래서 반복적 인 스타일로 전환하려고 노력하고 있습니다. 그러나 기술적으로는 분기 구조가 혼란 스럽기 때문에 그것을 할 수있는 방법을 상상할 수 없습니다. 누군가 그것을 처리 할 수있는 단서를 줄 수 있습니까?중첩 된 재귀 함수를 반복 함수로 변환
def main_function(parameters):
if condition0:
....
if condition1:
....
if condition2:
....
return function1(parameters)
else:
....
return function2(parameters)
else:
return function1(parameters)
else:
return function2(parameters)
#############################################
def function1(parameters):
if condition3:
...
return function3(parameters) ### yet another function.. so messed up? :-(((
else:
return main_function(parameters)
##############################################
def function2(parameters):
if condition4:
...
return main_function(parameters)
else:
return function1(parameters)
###############################################
def function3(parameters):
if condition5
if condition6:
...
return function3(parameters)
else:
...
return main_function(parameters)
else:
return RESULTS # The only way out!
어떤 생각이 크게 감사하겠습니다이 사전에 대단히 감사합니다 : 코드는 파이썬에서 그런 일입니다.
나는 "모든 재귀 함수가 스택을 기반으로 하나 같이 쓸 수있다"로 생각하고 싶다. 그게 도움이되는지 모르겠다. – Oded