[TIL] Day25-재귀

재귀

어떤 문제를 해결할 때, 구조는 동일하지만 더 작은 경우를 해결함으로써 그 문제를 해결하는 방법
함수 스스로를 호출하는 것
모든 재귀함수는 반복문 가능
어떠한 조건을 마주칠 때까지 계속 반복, 무한 반복을 막기위해 탈출조건이 필요 -> base case

  • 재귀를 사용하면 좋을때

주어진 문제가 (구조는 비슷하고) 더 작은 문제로 나뉘어 질 수 있는 경우
중첩된 루프가 많거나 중첩의 정도(number of loops)를 미리 알 수 없는 경우

재귀는 문제를 보는게 이해하기 가장 쉬운것 같다.

const sumTo = function(num) {
  if (num < 1) {
    return num;
  }//base case다. num이 0이 아닐경우 return을 통해 재귀함수를 끝낸다.
  return num + sumTo(num-1)
}
/* 만약 num이 4 일경우
	sumTo(4) = 4 + sumTo(3)
    				sumTo(3) = 3 + sumTo(2)
                    				sumTo(2) = 2 + sumTo(1)
                                    				sumTo(1) = 1 + sumTo(0)
                                                    				sumTo(0) = 0

그러므로 0 + 1 + 2 + 3 + 4 => 10 이 된다.

물론 실전 문제에선 단순히 숫자 말고도 배열을 재귀하거나 객체를 재귀할수도 있고 위에 나온것 처럼 반복문이 되는 것은 모두 가능하다.


마지막으로...

재귀는 코딩을 할때 굉장히 많이 자연스럽게 나오는 과정이기 때문에 최대한 빠르게 익숙해져야할 것이라고 생각한다. 최대한 많이 재귀를 풀어보자.

좋은 웹페이지 즐겨찾기