재귀함수

최경락 (K_ROCK_)·2021년 12월 14일
0
post-thumbnail

재귀함수란?

  • 어떤 함수가 실행과정에서 자기 스스로를 호출하여 반복하는 것
  • 동일한 구조의 작은 규모의 문제를 해결해나가면서 주어진 문제를 해결하는 방식
  • 문제를 쪼개고, 더는 쪼갤 수 없을 때, 가장 작은 단위의 문제부터 해결책을 사용해 해결해 나간다.
  • 모든 재귀 함수는 반복문으로 표현 될 수 있지만, 재귀를 쓰는게 훨씬 깔끔하다.

재귀적 사고

  1. 입력값과 출력값 정의하기
    • 입력이 어떤 출력값이 되어야하는지 정리한다.
  2. 문제를 쪼개어 경우의 수 나누기
    • 문제를 쪼개었을 때, 구분된 문제를 푸는 방식이나 순서가 크기에 상관없어야 한다.
  3. 단순한 문제 해결하기
    • 문제를 쪼갠 후 가장 쉬운 문제부터 해결한다.
    • 이를 재귀의 기초(base case) 라고 한다.
  4. 남아 있는 복잡한 문제 해결하기
    • 이를 recursive case 라고 한다.

재귀함수의 기본적인 형태

function recursive(input1, input2, ...) {
  // Base Case : 문제를 더 이상 쪼갤 수 없는 경우
  if (문제를 더 이상 쪼갤 수 없을 경우) {
    return 단순한 문제의 해답;
  }
  // recursive Case
  // 그렇지 않은 경우
  return 더 작은 문제로 새롭게 정의된 문제
  // 예1. someValue + recursive(input1Changed, input2Changed, ...)
  // 예2. someValue * recursive(input1Changed, input2Changed, ...)
}

+

  • 개발에서 중요한 비중을 차지하는 개념이므로 반드시 숙달하자....
  • 뜻 자체는 이해가가지만, 정말 자주 사용해보고 풀어보는 방식으로 손에 익히고, 결과를 예상해 낼 수 있어야 내 것이 될 것 같다.
  • 함수가 자기 자신 내부에서 반복한다는 알겠는데, 딱 거기까지라 미치겠음 ^^^^^^

0개의 댓글