문제
0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 정수 N(0 ≤ N ≤ 12)이 주어진다.
출력
첫째 줄에 N!을 출력한다.
| 예제입력 | 예제출력 |
| 10 | 3628800 |
| 0 | 1 |
⭕ 풀이
const input=Number(require('fs').readFileSync('/dev/stdin').toString());
function factorial(x){
if(x<0){return;}
else if(x===0){return 1;}
return x * factorial(x-1);
}console.log(factorial(input));
✅ 팩토리얼
1부터 어떤 양의 정수 n까지의 정수를 모두 곱한 것을 말하며 n!로 나타낸다.
0!=1로 약속하고, n이 대단히 큰 경우 스털링의 공식을 써서 근삿값을 구할 수 있다.
1부터 n개의 양의 정수를 모두 곱한 것을 n계승이라 하고, n!로 나타낸다.
즉, n! = 1×2×3×……×(n-1)×n이다. n은 보통 양의 정수 범위에서 주어진다.
n!=n×(n-1)!의 성질에서 n이 1일 때 1=1×0! 이 되므로 0!=1로 약속한다.
factorial(10)을 실행하게되면
x=10이므로 10* factorial(10-1)
factorial(9)를 실행하게되면 9*factorial(9-1)
이렇게 쭈욱 반복하다가
x=1 1*factorial(1-1)
factorial(0)이 되면
x===0이 충족되므로 1을 반환한다.
그럼 다시 역으로 올라가면
factorial(1)은 1*1 즉 1이라는게되고
factorial(2)는 x즉2 * fac(1)즉1 2*1 =2가된다.
factorial(3)은 x즉3 * fac(2)즉2 3*2 6
(x===0){ return 1}이 기반조건이 된다.
-출처
https://www.acmicpc.net/problem/10872
'Algorithm > Baekjoon(Node.js)' 카테고리의 다른 글
| [JavaSrcipt] Baekjoon - 10870 : 피보나치 수 5 (0) | 2021.10.09 |
|---|---|
| [JavaSrcipt] 재귀함수 (0) | 2021.10.09 |
| [JavaSrcipt] Baekjoon - 1002 : 터렛 (0) | 2021.10.08 |
| [JavaSrcipt] Baekjoon - 3053 : 택시 기하학 (0) | 2021.10.07 |
| [JavaSrcipt] Baekjoon - 4153 : 직각삼각형 (0) | 2021.10.06 |