[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 이 된다.
물론 실전 문제에선 단순히 숫자 말고도 배열을 재귀하거나 객체를 재귀할수도 있고 위에 나온것 처럼 반복문이 되는 것은 모두 가능하다.
마지막으로...
재귀는 코딩을 할때 굉장히 많이 자연스럽게 나오는 과정이기 때문에 최대한 빠르게 익숙해져야할 것이라고 생각한다. 최대한 많이 재귀를 풀어보자.
Author And Source
이 문제에 관하여([TIL] Day25-재귀), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@source39/TIL-Day25-재귀저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)