아래 내용은 나무위키에서 재귀 함수를 정의한 내용이다.
재귀 함수는 정의 단계에서 자신을 재참조하는 함수를 뜻한다.
어떤 사건이 자기 자신을 다시 자기 자신을 사용하여 정의될 때 재귀적(recursive)이라고 한다.
재귀함수의 경우에는 보통 반복되는 처리를 위해 사용한다. 예를 들어서 10부터 0까지의 숫자를 구하는 재귀 함수를 표현한다면 아래의 예시처럼 만들어 볼 수 있다.
function countdown(n) {
if (n < 0) return;
console.log(n);
countdown(n - 1); // 재귀 호출
}
countdown(10);
위의 예시처럼 간단하게 10부터 0까지 숫자가 작아지는 형태의 재귀 함수를 만들어 볼 수 있다.
팩토리얼(계승) 또한 재귀 함수로 간단히 만들어 볼 수 있다.
function factorial(n) {
// 탈출 조건: n이 1보다 작거나 같을 때 재귀 호출을 멈춘다.
if (n <= 1) return 1;
// 재귀 호출
return n * factorial(n - 1);
}
console.log(factorial(5)); // 5 * 4 * 3 * 2 * 1 = 120
이처럼 재귀 함수는 반복되는 처리를 위해 사용되는데 무한히 호출 되는 함수이다 보니 재귀 함수 내에는 재귀 호출을 멈출 수 있는 탈출 조건이 반드시 필요하다.
위의 팩토리얼 재귀 함수의 경우에는 인수의 값이 1이하 일 때 재귀 호출을 멈춘다. 탈출 조건을 넣지 않으면 함수가 무한히 호출되어 스택 오버플로 에러가 발생하니 주의하도록 하자.