18일차
TIL 210325
1. 재귀란 ? ( recursion )
- 어떤 문제를 해결할떄, 구조는 동일하지만 더 작은 경우를 해결함으로써 그 문제를 해결하는 방법
- 재귀적 사고 연습을 통해 재귀 함수를 base case 와 recursive case 로 나눠서 작성할 수 있다.
- 재귀는 아래 상황에 매우 적합하다.
- 주어진 문제가 ( 구조는 비슷하고 ) 더 작은 문제로 나뉘어 질 수 있는 경우
- 중첩된 루프가 많거나 중첩의 정도를 미리 알 수 없는 경우
2. 재귀적으로 사고하기
- 재귀함수의 입력값과 출력값 정의하기
- 문제를 쪼개고 경우의 수를 나누기
- 단순한 문제 해결하기 = base case
- 복잡한 문제 해결하기 = head와 tail 나누기
- 일반적인 재귀함수의 템플릿
function recursive(input1, input2, ...) {
// 재귀의 기초 (base case)
if (문제를 더 이상 쪼갤 수 없을 경우) {
return 단순한 문제의 해답;
}
// recursive Case
// 그렇지 않은 경우
return 더 작은 문제로 새롭게 정의된 문제
// 예1. someValue + recursive(input1Changed, input2Changed, ...)
// 예2. someValue * recursive(input1Changed, input2Changed, ...)
}