재귀란 '본디의 곳으로 다시 돌아오는 것' 이라는 뜻이다.
말 그대로, 재귀 함수는 메서드 내에서 다시 본 메서드를 호출하는 것을 말한다.
다음은 재귀의 대표적인 예제인 팩토리얼을 재귀 호출로 구현한 메서드 예시 코드이다.
return에 의한 반환 값에 다시 한 번 본 메서드가 들어가게 된다. 이러한, 동작 원리를 재귀라고 한다.
재귀의 장점은 다음과 같다.
- 불필요한 반복문을 줄일 수 있으므로, 코드가 간결해지고 수정이 용이하다.
- 여러 변수를 사용하지 않아도 된다.
재귀의 단점은 다음과 같다.
- 반복문과는 달리, 코드의 흐름을 한눈에 알아보기 어렵다.
- 반복문보다 더 많은 메모리를 사용하게 된다.
- 메서드를 호출하고 종료된 이후에, 복귀를 위한 컨텍스트 스위칭 비용이 발생한다.
재귀함수는 조건이 존재한다.
재귀 호출이 종료되는 시점(base case)이 무조건 존재해야 하고, 문제의 크기를 점점 작은 단위로 쪼갤 수 있어야 한다.
만약에, 종료되는 시점이 없다면, StackOverFlow라는 에러가 발생한다.
이 에러가 뜬다면, 무한 루프에 빠졌구나! 라고 생각하면 되겠다.
'Develop > Algorithm' 카테고리의 다른 글
그래프(Graph) 구조 (0) | 2022.09.24 |
---|---|
트리(Tree) 구조 (0) | 2022.09.24 |
스택(Stack)과 큐(Queue) (0) | 2022.09.22 |
재귀 함수와 메모리 사용량 관계 _ 꼬리 재귀 (1) | 2022.09.21 |
배열 (0) | 2022.09.06 |