재귀함수란?
- 함수 내에서 자기 자신(실행 중인 함수)을 다시 호출하는 함수
- 함수의 복사본을 하나 더 만들어서 복사본을 실행한다.
- 함수 안에 함수가 함수를 부르고 그 함수가 또 함수를 부르기를 반복하기 때문에 결과는 무한히 반복한다. ( return문 꼭 필요! )
주어진 문제를 비슷한 구조의 더 작은 문제로 나눌 수 있는 경우
중첩된 반복문이 많거나 반복문의 중첩 횟수(number of loops)를 예측하기 어려운 경우
모든 재귀 함수는 반복문(while 문 또는 for 문)
으로 표현할 수 있다. 그러나 재귀를 적용할 수 있는 대부분의 경우에는, 재귀를 적용한 코드가 더욱 간결하고 이해하기 쉽다.
재귀 함수의 입력값과 출력값 정의하기
문제를 쪼개고 경우의 수를 나누기
단순한 문제 해결하기
복잡한 문제 해결하기
코드 구현하기
function arrSum(arr) {
//Base Case : 문제를 더 이상 쪼갤 수 없는 경우 (재귀의 기초)
if (문제를 더 이상 쪼갤 수 없을 경우) {
return 단순한 문제의 해답;
}
/*
* Recursive Case : 그렇지 않은 경우
* 문제를 더 이상 쪼갤 수 없는 경우
* head: 배열의 첫 요소
* tail: 배열의 첫 요소만 제거된 배열
*/
return 더 작은 문제로 새롭게 정의된 문제;
}
function fac(n) {
if(n ===1) {
return 1;
}
return n * fac(n-1)
}