08. 재귀함수와 완전탐색(DFS:깊이우선탐색)
개념 정리
재귀함수(Recursion)
재귀함수란 함수에서 자기 자신을 다시 호출해 작업을 수행하는 방식이다. 조건으로 그 재귀를 빠져나오도록 설계해야 무한 루프에 빠지지 않는다.
장점
변수를 여럿 만들 필요가 없다. → 현재 상태를 저장해야 할 경우 tmp
변수를 만들기보다 상태를 메서드로 재귀적으로 호출하면서 변경된 상태를 전달 함으로써 변수의 수를 줄일 수 있다.
단점
지속해서 함수를 호출하게 되면서 지역변수, 매개변수, 반환 값을 모두 process stack
에 저장해야 한다. 그리고 이런 과정은 선언한 변수의 값만 사용하는 반복문에 비해서 메모리를 더 많이 사용하게 되고, 이는 속도 저하로 이어진다. 이를 보완하기 위해 Tail Call Recursion
이라는 것이 있다.
Tail Call Recursion
아래와 같이 함수에 담에서 호출하게 되면 Process Stack