재귀를 사용하여 팩토리얼(factorial)을 구하는 함수를 구현해주세요. 팩토리얼이란 1에서부터 n까지의 정수를 모두 곱한것을 말합니다.
1! = 1
2! = 1 * 2
5! = 1 * 2 * 3 * 4 * 5
재귀 함수를 통해 구현을 하면 되기 때문에 함수 내에서 재귀적으로 팩토리얼 인자를 쌓아 곱해주도록 해주면 될 것이라고 생각했다.
const factorial = n => {
// 종료 조건; 0일 경우 1을 return
if (n === 0) return 1;
// 재귀 함수를 사용하여 팩토리얼 계산. Ex. n * (n-1) * ( n-1)-1 ...
return n * factorial(n-1);
}
const factorial = n => {
// n의 시작값을 1로 지정(팩토리얼은 0일 필요 X)
var result = 1;
// for 문을 이용하여 n의 크기를 1씩 줄여나가면서 곱한다. (단, 0은 제외)
for (var i = n; i >= 1; i--) {
// 값들을 모두 곱해 result에 저장
result *= i;
}
return result;
코드 카타를 풀면서 거의 처음으로 재귀 함수를 이용한 문제였다. 비교적 코드를 간결하게 집약시킬 수 있었고, 재귀에 대한 부분을 검토하며 공부할 수 있었으며, 논리적 과정을 이해할 수 있었다.