DFS 구현을 위해 queue 자료구조와 함께 반드시 알아야 하는 함수이다.
파이썬은 디폴트로 재귀함수 호출 제한이 걸려있으므로, 내부적으로 호출제한을 풀어놓는 명령어를 작성해주어야 한다.
def recursion_function(i)
if i == 100
return #탈출조건, 재귀함수가 더이상 호출되지 않으므로 탈출
print('i번째에서 i+1번째 재귀함수를 호출합니다')
recursion_function(i+1)
print('i번째 재귀함수를 종료합니다')
위 재귀함수는 1~100번째 재귀함수를 호출합니다를 출력 후 99번째 재귀함수를 종료합니다부터 1번째 재귀함수를 종료합니다까지 출력된다.
즉, stack에 재귀함수가 반복적으로 쌓인 후 return을 통해 재귀함수가 호출되지 않는다면 잔여(하위에 남아있는) 명령구문을 호출 및 실행한다.
또한 일전 stack에 쌓여있으면서 하위 명령구문들을 실행하지 않았을 경우, 하위 명령구문들을 실행하면서 stack이 비어있을때까지 실행후 종료한다.
return을 하면서 재귀함수를 호출한다면, 하위 명령구문들을 남기지 않으므로(모든 재귀함수를 호출한 후 잔여 명령문들이 없어질때까지 반복) 재귀함수가 호출되는 즉시 별도의 실행없이 바로 재귀함수를 종료시킬 수 있다.
def functional_recursive(N):
if N <= 1:
return 1
else:
return N * functional_recursive(N-1)
위 재귀함수는 호출 후 잔여 명령문이 없으므로 그대로 종료된다.
def gcd(a,b):
if a%b == 0:
return b
else :
gcd(a, a%b)