[알고리즘] 재귀

박채은·2022년 11월 21일
0

Algorithm

목록 보기
1/10

재귀로 코드를 짤 때, 생각해야하는 것은 2가지이다.

1. 탈출 조건(base case)

  • 재귀 호출이 멈추는 조건 = 문제를 더 이상 쪼갤 수 없는 경우
  • 단순한 문제의 해답을 return

2. 반복 조건(recursive case)

  • 문제를 가장 작은 단위까지 쪼갠다.

장점/단점

장점

  • 반복문 대신에 사용하여, 여러 개의 반복문을 사용하지 않아도 되고 코드가 간결해진다.
  • 변수를 여러 개 사용할 필요가 없다.

단점

  • 코드가 직관적이지 않다.
  • 매서드를 반복해서 호출하므로, 호출될 때마다 메서드의 정보(지역변수, 매개변수, 반환값)를 stack에 저장하게 된다. -> 메모리를 많이 사용
  • 메서드가 종료된 후에, 복귀를 위한 컨텍스트 스위칭 비용이 발생한다.

🚨 주의 🚨
spring에서 재귀는 쓰지 말자! 함수가 호출될 때마다, 계속 stack에 쌓이기 때문에 메모리 누수가 발생할 가능성이 높다.
알고리즘 문제를 풀 때만 재귀를 사용할 것!

0개의 댓글