재귀 호출을 이용해 간단하게 문제를 해결할 수 있는 특정 경우에 사용되며, 가장 많이 사용되는 예시로는 팩토리얼을 들 수 있다.
재귀 함수 (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을 반환하는 것으로 재귀함수를 멈추었다.
재귀함수는 몇몇 경우에 편리하게 사용할 수 있지만, 이해하기 어려운 측면도 있으므로 반복문을 사용하여 표현할 수 있다면 반복문을 사용하는 것이 더 좋은 경우가 많다.
위의 factorial 함수도 for 문을 이용해 간략하게 표현할 수 있습니다.
function factorial(n) { var result = 1; for (n; n > 1; n--) { result *= n } return result; } factorial(3);