0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.
첫째 줄에 정수 N(0 ≤ N ≤ 12)가 주어진다.
첫째 줄에 N!을 출력한다.
10
3628800
0
1
//---- 세팅 ----//
const fs = require('fs');
const stdin = (
process.platform === 'linux'
? fs.readFileSync('/dev/stdin').toString()
: `\
10
`
).split('\n');
const input = (() => {
let line = 0;
return () => stdin[line++];
})();
//---- 풀이 -----//
const n = Number(input());
const factorial = n => {
if (n < 0) return 0;
if (n === 0 || n === 1) return 1;
return n * factorial(n - 1);
};
console.log(factorial(n));
재귀의 대표적인 문제이다.
재귀의 종료조건으로 n < 0
과 n === 0 || n === 1
을 정하고
재귀문에서는 현재 값과 n - 1
의 재귀를 곱해준다.