학습 내용
주어진 문제를 비슷한 구조의 더 작은 문제로 나눌 수 있는 경우
중첩된 반복문이 많거나 반복문의 중첩 횟수를 예측하기 어려운 경우
문제를 쪼갤 기준을 정하고, 정한 기준에 따라 문제를 더 큰 경우와 작은 경우로 구분합니다.
모든 경우에 문제를 해결하는 방법이 적용된다면 올바른게 나눈 것입니다.
더 이상 쪼갤수 없는 경우까지 나눕니다.
가장 해결하기 쉬운 문제 혹은 더 이상 쪼갤수 없는 경우부터 해결합니다.
이를 재귀의 기초(base case)라고 부릅니다.
이는 재귀 함수의 탈출 조건이 됩니다.
function recursive(input1, input2, ...) {
// Base Case , 문제를 더 이상 쪼갤 수 없는 경우
if (문제를 더 이상 쪼갤 수 없을 경우) {
return 단순한 문제의 해답;
}
// recursive Case, 그렇지 않은 경우
return 더 작은 문제로 새롭게 정의된 문제
// 예1. someValue + recursive(input1Changed, input2Changed, ...)
// 예2. someValue * recursive(input1Changed, input2Changed, ...)
}
JSON.stringify (객체)
// 객체의 내용물을 모두 string 타입으로 변환시켜줍니다.
더 알아볼 내용
느낀 점 && 미비한 점
재귀 함수라는게 이해를 돕기 위한 문제는 간단했지만 실사용할거 같은 코드 에서는 너무 복잡하다. 복잡하고 어려운 이유는 규칙을 모른다는 것이 아닌 사고의 차이인거 같다. 누가 더 머리속에서 상황 파악, 전체적인 구조, 흐름 등을 잘 담고 있느 냐에 따라 재귀 함수의 활용이 차이가 나는거 같다.
이건 단기간에 익히고 늘릴수 있는게 아니라고 생각한다. 다양한 코드, 알고리즘 등을 보면서 프로그래밍 적 사고를 늘려나간다면 같이 향상될수 있을거라고 생각한다.