함수가 함수 내부에서 자기 자신을 호출하는 함수를 가리켜 재귀함수 (Recursive function)이라고 부른다. 이러한 재귀함수는 재귀 호출을 이용해 간단하게 문제를 해결할 수 있는 특정 경우에 사용되며, 재귀함수에 가장 많이 사용하는 예시로는 팩토리얼이 있다.
팩토리얼은 n이 자연수일 경우, 1에서 n까지의 모든 자연수의 곱을 나타낸 것을 팩토리얼 이라고 한다.
즉 3의 팩토리얼 3!는 3 2 1 = 6 이 된다.
재귀함수를 이용해 나타낸 예제를 보자.
function factorial(n) {
if (n <= 1) return 1;
return n * factorial(n - 1);
}
factorial(3); // 6
이 경우 함수 내부의 재귀 호출은 n-1값으로 대치되어 결국 3 2 1 의 팩토리얼 결과를 반환하게 됩니다. 특히 함수를 종료시키기 위해 n이 1이하일 경우는 1을 반환하는 것으로 재귀함수를 멈추었습니다.
재귀함수는 몇몇 경우에 편리하게 사용할 수 있지만, 이해하기 어려운 측면도 있으므로 반복문을 사용하여 표현할 수 있다면 반복문을 사용하는 것이 더 좋은 경우가 많다.