[자료구조&알고리즘] 재귀

Dubiju·2022년 11월 17일
0
post-thumbnail

재귀

재귀(再歸) | 원래의 자리로 되돌아가거나 되돌아옴. [표준국어대사전]

public void recursion() {
	System.out.print("재귀가 ");
    System.out.print("궁금하니..?");
    recursion();
}

재귀함수란?

자기 자신을 끝없이 호출하면서 같은 코드가 계속해서 실행하도록 자기 자신을 호출하는 함수

재귀를 사용하기 적합한 상황

  1. 주어진 문제를 비슷한 구조의 더 작은 문제로 나눌 수 있는 경우
  2. 중첩된 반복문이 많거나 반목문의 중첩 횟수를 예측하기 어려운 경우

특징

모든 재귀 함수는 반복문으로 표현 가능

장점

  • 여러개의 반복문을 사용하지 않기 때문에, 코드가 간결해지고, 수정이 용이
  • 변수를 여러개 사용할 필요 없음

단점

  • 코드의 흐름을 직관적으로 파악 어려움
  • 반복문에 비해 메모리를 더 많이 사용
  • 메서드를 호출하고 메서드가 종료된 이후에 복귀를 위한 컨텍스트 스위칭 비용 발생

사용 조건

  • 문제의 크기를 점점 작은 단위로 쪼갤 수 있어야 함
  • 재취 호출이 종료되는 시점이 존재해야 함

TIL

재귀의 개념은 알겠는데 막상 사용하기 위해 문제를 쪼개고 경우의 수를 나누는 게 쉽지 않다. 수 더하기나 팩토리얼 같은 것은 괜찮은 데 배열을 사용하는 등의 문제를 만나니 구현하기 너무 어려운 것 같다.

profile
Backend Developer

0개의 댓글