18일차 TIL 210325

1. 재귀란 ? ( recursion )

  • 어떤 문제를 해결할떄, 구조는 동일하지만 더 작은 경우를 해결함으로써 그 문제를 해결하는 방법
  • 재귀적 사고 연습을 통해 재귀 함수를 base case 와 recursive case 로 나눠서 작성할 수 있다.
  • 재귀는 아래 상황에 매우 적합하다.
    • 주어진 문제가 ( 구조는 비슷하고 ) 더 작은 문제로 나뉘어 질 수 있는 경우
    • 중첩된 루프가 많거나 중첩의 정도를 미리 알 수 없는 경우

2. 재귀적으로 사고하기

  1. 재귀함수의 입력값과 출력값 정의하기
  2. 문제를 쪼개고 경우의 수를 나누기
  3. 단순한 문제 해결하기 = base case
  4. 복잡한 문제 해결하기 = head와 tail 나누기
  • 일반적인 재귀함수의 템플릿
function recursive(input1, input2, ...) {
  // 재귀의 기초 (base case)
  if (문제를  이상 쪼갤  없을 경우) {
    return 단순한 문제의 해답;
  }
  // recursive Case
  // 그렇지 않은 경우
  return  작은 문제로 새롭게 정의된 문제
  // 예1. someValue + recursive(input1Changed, input2Changed, ...)
  // 예2. someValue * recursive(input1Changed, input2Changed, ...)
}

Updated: