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

JavaScript로 배열의 각 숫자에 대한 팩토리얼(계승)을 계산해 새 배열로 반환하기

이번 글에서는 숫자로 이루어진 배열을 입력받아, 각 요소에 해당하는 팩토리얼(계승) 값을 담은 새로운 배열을 반환하는 JavaScript 함수를 작성해 보겠습니다.

구현 방식은 다음과 같습니다. 먼저 하나의 숫자를 받아 그 팩토리얼을 반환하는 재귀(recursive) 함수를 작성하고, 이후 map() 메서드를 사용해 배열의 각 요소를 순회하면서 팩토리얼을 계산한 뒤, 최종적으로 팩토리얼 값들로 구성된 새로운 배열을 반환합니다.

코드 예제

const arr = [4, 8, 2, 7, 6, 20, 11, 17, 12, 9];

// 재귀 방식으로 팩토리얼을 계산하는 함수
const factorial = (num, fact = 1) => {
    if(num){
        return factorial(num-1, fact*num);
    };
    return fact;
};

// map()으로 각 요소의 팩토리얼을 구해 새 배열 생성
const factorialArray = arr => arr.map(element => factorial(element));

console.log(factorialArray(arr));

위 코드에서 factorial 함수는 기본 매개변수(default parameter)인 fact = 1을 활용합니다. 숫자가 0이 될 때까지 자기 자신을 재귀 호출하면서 곱셈 결과를 누적하고, 0이 되면 누적된 값을 반환하는 방식입니다.

실행 결과

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

[
    24,
    40320,
    2,
    5040,
    720,
    2432902008176640000,
    39916800,
    355687428096000,
    479001600,
    362880
]

예를 들어 첫 번째 요소 4의 팩토리얼은 4 × 3 × 2 × 1 = 24이고, 두 번째 요소 8의 팩토리얼은 40320입니다. 이처럼 원본 배열의 각 위치에 대응하는 팩토리얼 값들이 순서대로 새 배열에 담겨 반환됩니다.