반응형
출처
https://www.acmicpc.net/problem/10872
10872번: 팩토리얼
0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.
www.acmicpc.net
문제
0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.
풀이
이 문제는 처음 재귀를 접하는 나에게 꽤 어려운 문제였다. 그래서 다른 분들의 답을 참고하였는데 우선 팩토리얼이라는 함수를 만들고 이 함수는 n을 받을 수 있도록 하였다.
그리고 이 함수는 n* 팩토리얼 함수(n-1)를 리턴하는데 이렇게 계속 재귀가 반복된다. 결국 n이 1보다 작아질 때, 1을 리턴하여서 결국에는 주어진 숫자부터 1까지의 곱(팩토리얼)을 리턴하게 된다.
코드
const fs = require('fs');
const input = Number(fs.readFileSync('/dev/stdin').toString().trim());
const factorial = (n) => {
if (n < 1) {
return 1;
}
return n * factorial(n - 1);
}
console.log(factorial(input));
반응형
댓글