Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

자바스크립트 재귀 함수로 팩토리얼(계승) 계산하기

이 글에서는 자바스크립트(JavaScript)에서 재귀(recursion) 기법을 활용해 특정 숫자 n의 팩토리얼(Factorial, 계승)을 계산하는 함수를 작성하는 방법을 알아봅니다.

재귀란 무엇인가?

재귀는 함수가 자기 자신을 다시 호출하는 프로그래밍 기법입니다. 팩토리얼은 n! = n × (n-1) × (n-2) × … × 1로 정의되며, 'n! = n × (n-1)!'이라는 수학적 성질을 가지고 있기 때문에 재귀로 구현하기에 아주 적합한 문제입니다.

코드 예제

아래 코드는 재귀 방식으로 팩토리얼을 계산하는 함수입니다.

const num = 9;
const recursiveFactorial = (num, res = 1) => {
    if(num){
        return recursiveFactorial(num-1, res * num);
    };
    return res;
};
console.log(recursiveFactorial(num));
console.log(recursiveFactorial(6));
console.log(recursiveFactorial(10));
console.log(recursiveFactorial(5));
console.log(recursiveFactorial(13));

출력 결과

콘솔에 출력되는 결과는 다음과 같습니다.

362880
720
3628800
120
6227020800

동작 원리

이 함수는 두 번째 매개변수 res에 곱셈 결과를 누적하면서, num이 0이 될 때까지 자기 자신을 계속 호출합니다. num이 0이 되면 if 조건이 거짓이 되어 지금까지 누적된 res 값을 반환하며 재귀가 종료됩니다.

예를 들어 recursiveFactorial(5)는 5 → 4 → 3 → 2 → 1 순서로 감소하며 각 단계마다 res에 곱해지고, 최종적으로 120이 반환됩니다. 이처럼 반복문 없이도 간결하고 직관적으로 팩토리얼을 구현할 수 있다는 점이 재귀 방식의 가장 큰 장점입니다.