작은문제를 해결함으로써 주어진문제를 해결 하는것!
예제
수(num)를 입력받아 1부터 num까지의 합을 리턴해야 합니다.
function sumTo(num) {
if (num === 0){
return 0
}else{
return num+sumTo(num-1)
}
// TODO: 여기에 코드를 작성합니다.
// 별도의 최적화 기법(memoization)은 금지됩니다.
}
1. 재귀함수의 입력값과 출력값을 정의하기
// 코딩문제를 풀기 전에는 늘 입력값과 출력값이 무엇인지 먼저 확인하고 시작
// 큰 그림 그리기의 시작
// sumTo: num =>num
2. 문제를 쪼개고 경우의 수를 나누기
// " 하나의 문제 풀이 방식으로 모든 문제를 해결할수 있나요?"
// " 문제 해결 구조는 동일하지만 더 작은 경우를 먼저 해결함으로써 그문제를 해결하는 방법"
// " 1부터 5까지의 합을 구하려면, 먼저 1부터 4까지의 합을 구해야 한다."
// 1+ 2+ 3+ 4+ 5 === sumTo(5)
// sumTo(4) + 5 === sumTo(5)
// sumTo(n-1) + n === sumTo(n)
3. 단순한 문제 해결하기
// sumTo(1) === 1 -> base case
4. 복잡한 문제 해결하기
// sumTo(n-1) + n === sumTo(n) -> recursive case(재귀)
5. 코드 구현하기
debugger;
sumTo(5);