재귀

Haizel·2023년 4월 17일
0

면접대비

목록 보기
5/5

🤔 재귀를 활용하기 좋은 상황은 언제인지 예시를 들어 설명해주세요.

  • 재귀함수는 “작은 단위를 수행하는 함수로 표현된 자기 자신을 호출하는 함수”를 말합니다. 즉 재귀함수는 반복할 구문을 함수 단위로 쪼개 → 특정 조건이 만족할 때까지 함수를 호출하는 패턴을 가집니다.

    • 이러한 패턴은 반복문과도 동일한데, 반복문과 다른 점은 재귀는 반드시 무한반복을 방지하기 위한 탈출 조건이 필요합니다.
  • 그렇다면 반복문과 비슷하고, 탈출 조건까지 필요한 재귀함수를 왜, 그리고 언제 써야 할까요?

    • 재귀함수의 장점은, 반복적인 작업을 간결하고 가독성 좋은 코드로 풀어낼 수 있다는 것입니다. 이러한 재귀함수의 장점을 활용하기 좋은 두가지 상황이 있습니다.
      • 첫째, 주어진 문제를 비슷한 구조의 더 작은 단위로 나눌 수 있는 경우입니다. 대표적으로 피보나치 수열이 있습니다.
      • 두번째는 중첩된 반복문이 많거나 반복문의 중첩 횟수를 예측하기 어려운 경우입니다.
  • 하지만 재귀함수를 사용할 때 주의할 점이 있는데요.

    • 함수를 재귀적으로 너무 많이 호출하면 콜스택이 계속 쌓이면서 → 메모리를 비효율적으로 사용하게 되고,
    • 재귀함수의 반복되는 로직이나 리턴되는 값을 예측하기 어렵다면 → 오히려 가독성을 떨어뜨릴 수 있습니다.
  • 따라서 문제에 맞게 재귀함수 혹은 반복문을 적절히 선택해 활용해야 합니다.


💡 Call Stack이란?
  • 여러 함수들이 호출될 때, 해당 호출의 위치를 추적하는 자바스크립트 엔진을 위한 매커니즘이다.
  • 현재 어떤 함수가 동작하고 있는지, 그 함수 내에서 어떤 함수가 호출되는지 등의 내용을 알 수 있다.
  • 즉, 함수가 호출될 때 해당 함수는 Call Stack에 쌓이게 된다
profile
한입 크기로 베어먹는 개발지식 🍰

0개의 댓글