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

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

이번 글에서는 재귀(recursion) 방식을 활용해 숫자 n의 팩토리얼(계승)을 계산하는 자바스크립트 함수를 작성해 보겠습니다.

팩토리얼이란 양의 정수 n에 대해 1부터 n까지의 모든 정수를 곱한 값으로, 수식으로는 n! = n × (n-1) × (n-2) × ... × 1로 표현됩니다. 예를 들어 5!는 5 × 4 × 3 × 2 × 1 = 120입니다.

재귀 기반 팩토리얼 함수 만들기

재귀란 함수가 자기 자신을 다시 호출하는 프로그래밍 기법을 말합니다. 아래 코드에서는 사용자 정의 함수 recursiceFactorial()을 만들어 팩토리얼을 재귀적으로 계산합니다.

const num = 9;
const recursiceFactorial = (num, res = 1) => {
    if(num){
        return recursiceFactorial(num-1, res * num);
    };
    return res;
};

코드 동작 원리

이 함수는 두 개의 매개변수를 받습니다. 첫 번째는 곱할 숫자 num, 두 번째는 누적 결과값 res이며 기본값은 1로 설정되어 있습니다.

  • num이 0이 아니면, 현재 값을 res에 곱한 뒤 num - 1로 자기 자신을 다시 호출합니다.
  • num이 0이 되면 재귀 호출을 멈추고(base case), 지금까지 누적된 res를 반환합니다.

즉, 9를 넣으면 9 × 8 × 7 × ... × 1이 차례대로 누적되어 최종 결과가 반환됩니다.

함수 호출 및 실행

이제 함수를 호출하면서 다양한 값을 전달해 결과를 확인해 보겠습니다.

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

출력 결과

다음은 콘솔에 출력된 결과입니다.

362880
720
3628800
120
6227020800

각 입력값에 대한 팩토리얼이 정확하게 계산된 것을 확인할 수 있습니다. 참고로 자바스크립트의 Number 타입은 안전한 정수 범위가 제한되어 있으므로, 매우 큰 수의 팩토리얼을 다룰 때는 BigInt를 사용하는 것이 좋습니다.