[자료구조] 211006 재귀 기초개념 복습

밍징·2021년 10월 6일
0

개념복습_ver.

목록 보기
19/30

📌 재귀함수?

쉽게 말해 자기자신을 호출하는 함수이다. 말이 쉽지 이 개념을 직접 코드를 작성해서 문제를 해결하려고 하면 너무 어렵다ㅠ 그래서 쪼개서 생각하는 게 좋다. 예를 들어 5!(5팩토리얼) 을 구한다고 생각해본다.

4! 은 4 x 3 x 2 x 1 이다. 그런데 4!은 구하기가 어려운 것 같다. 그럼 쪼개보자. 따지고 보면 4! 은 4 x 3! 이다.


3! 은 3 x 2 x 1 이다. 이것 또한 쪼개보면 3 x 2! 로 볼 수 있다.

이미지로 생각해보면 아래와 같다. 이 이미지를 계속 생각하면서 문제들을 진행하는게 여러모로 도움이 됐던 거 같다.

📌 재귀함수는 언제 쓰면 좋을까?

  • 주어진 문제를 비슷한 구조의 더 작은 문제로 나눌 수 있는 경우
  • 중첩된 반복문이 많거나 반복문의 중첩 횟수(number of loops)를 예측하기 어려운 경우

위와 같은 경우에 재귀함수를 쓰면 된다고 한다. 그러나 어떨 때는 반복문을 쓰는게 효율적일 때도 있고, 어떨 때는 반복문보다는 재귀를 이용하는게 효율적일 때도 있다. 그래서 적절하게 잘 써야 하는 것 같다.

❗스택오버플로우 현상
재귀 함수는 호출 시 마다 스택 공간에 뭔가를 저장하기 때문에, 무리하게 호출하면 '스택 오버플로우'가 발생할 수 있음

재귀함수에 대한 기본 개념은 이정도로 하고 기본문제들을 풀면서 익히는 게 훨씬 좋은 듯 하다.

profile
프론트엔드를 공부하고 있는 디자이너 입니다 :D

0개의 댓글

관련 채용 정보