⚠️ 모든 재귀 함수는 반복문(while
문 또는 for
문)으로 표현 가능함
재귀 함수의 입력값과 출력값 정의하기
문제를 쪼갤 기준을 정하고, 정한 기준에 따라 문제를 더 큰 경우와 작은 경우로 구분할 수 있는지 확인한다.
- 일반적으로, 입력값을 기준으로 판단한다.
- 주어진 입력값 또는 문제 상황을 크기로 구분할 수 있거나, 순서를 명확하게 정할 수 있다면 문제를 구분한다.
- 구분된 문제를 푸는 방식이 순서나 크기와 관계없이 모두 같도록 문제 구분하기
- 문제에서 주어진 입력값에 따라, 경우의 수를 나누기
- 일반적으로 문제를 더 이상 쪼갤 수 없는 경우와 그렇지 않은 경우로 나눔
재귀의 기초부터 구성하기
base case
: 재귀 함수에서 재귀의 탈출 조건 (재귀 호출이 멈추는 조건)을 구성
재귀할 조건 구성하기
recursive case
function recursive(input1, input2, ...) {
// base case : 문제를 더 이상 쪼갤 수 없는 경우
if (문제를 더 이상 쪼갤 수 없을 경우) {
return 단순한 문제의 해답;
}
// recursive case : 그렇지 않은 경우
return 더 작은 문제로 새롭게 정의된 문제
}
function factorial(num) {
if(num===0) return 1
return num * factorial(num-1)
}
const factorial = num => num === 0 ? 1 : num * factorial(num - 1)
function fibonacci(n) {
if(n <=1) return n
return fibonacci(n-2) + fibonacci(n-1)
}