프로그래머스 | 팩토리얼 함수

chaen·2023년 12월 27일
post-thumbnail

📌 문제

팩토리얼(factorial)은 n이 자연수일 때, 1부터 n까지의 모든 자연수의 곱을 의미합니다. n 팩토리얼은 n!으로 표시합니다.

자연수 n이 있을 때, n!을 구하세요. 이때, n은 1 이상 12 이하입니다.

✨ 해결 방법

팩토리얼은 아래와 같이 정의할 수 있습니다.

n! = n * (n - 1) * (n - 2) * ...*1

자연수 5!까지의 팩토리얼 나열

1! = 1
2! = 2 * 1! = 2
3! = 3 * 2! = 3 * 2 * 1 = 6
4! = 4 * 3! = 4 * 3 * 2! = 4 * 3 * 2 * 1 = 24
5! = 5 * 4! = 5 * 4 * 3! = 5 * 4 * 3 * 2! = 5 * 4 * 3 * 2 * 1 = 120

n!은 n * (n - 1)!과 값이 같습니다.
따라서 factorial(n) = n * factorial(n-1) 입니다. 함수의 인수는 n-1에서 1이 될 때까지 점점 줄어들게 됩니다.

💻 solution

function factorial(n) {
    let answer = 1;

    if ( 1 <= n && n <= 12 ) {
        for (let i= 2; i <= n; i++) {
            answer *= i;
        }
    }
    return answer;
}

i 값을 2부터 시작한 이유는, 팩토리얼 계산에서 i을 1부터 시작할 필요가 없기 때문입니다.

보통 팩토리얼은 1부터 시작하여 n까지의 모든 정수를 곱한 값을 구하는 방식입니다. 따라서 1을 곱하는 것은 결과에 아무런 영향을 미치지 않습니다. 곱셈의 항등원인 1을 곱해도 값이 변하지 않기 때문입니다.

따라서, 일반적으로 팩토리얼 계산에서는 1을 곱하는 것은 생략되곤 합니다.

👍 보충 설명을 위한 예시

console.log(factorial(5));

for (let i= 2; i <= 5; i++) {
            answer = answer * i;
}

//i = 1일 때: answer = 1 * 1 = 1
//i = 2일 때: answer = 1 * 2 = 2
//i = 3일 때: answer = 2 * 3 = 6
//i = 4일 때: answer = 6 * 4 = 24
//i = 5일 때: answer = 24 * 5 = 120

0개의 댓글