Javascript Factorial 함수

Factorial이란, 1에서 n까지의 모든 자연수의 곱을 n에 대하여 이르는 것으로 n!로 표기합니다.

For example, 
5! = 1 _ 2 _ 3 _ 4 _ 5 ==> 120

아래는 팩토리얼 문제입니다.

Factorial of n: The factorial of n is the product of all the integers preceding n, starting with 1

e.g.:
factorial(3); // => 6
factorial(4); // => 24
factorial(5); // => 120

그리고 다음은 제가 고민해서 짠 함수입니다.

function factorial(n) {
  var cur = 1;
  for (let i = 1; i <= n; i++) {
    cur = cur * i;
  }
  return cur;
}

factorial(3); // => 6
factorial(4); // => 24
factorial(5); // => 120

코드를 풀어서 보면, 아래와 같이 진행되는 걸 확인할 수 있습니다.

 
cur값
 i값 
cur(return)값
1st iteration
1
1 1
2nd iteration
1
2 2
3rd iteration
2
3 6
4rd iteration
6
4 24
5rd iteration
24
5 120

=> 1 x 2 x 3 x 4 x 5 = 120

다른 풀이 방법도 검색해 보았습니다 (https://medium.freecodecamp.org)

function factorialize(num) {
  if (num < 0) return -1;
  else if (num == 0) return 1;
  else {
    return num * factorialize(num - 1);
  }
}
factorialize(5);

설명도 친절하게 잘 나와 있어 함께 옮겨 적어 봅니다.