코드카타 Day15

위의 글을 참고하면 재귀 함수에는 꼭 필요한 두가지가 있다.

1) 함수 안에 그 함수를 불러온다
2) 언제 멈출지에 대한 종료 조건을 정한다

const factorial = n => {
    if (n === 1 || n === 0) {
    	return 1;
    }
    else {
      return n * factorial(n-1);
    }
}

삼항연산자 적용후

const factorial = n => {
  return (n <= 1) 
  ? 1
  : n * factorial(n-1)
}

if문안에 n === 0 이 있는게 의문일 수 있는데,
팩토리얼을 '1에서부터 n까지의 정수를 모두 곱한것'이라고 정의하고 있지만,
팩토리얼에서는 0!도 포함하고 있다.
이는 사실 팩토리얼은 "경우의 수"를 구하기 위해 사용되는 식이라서 그렇다.
(4! = 24는 4명이 줄을 설 수 있는 경우의 수)
그렇기 때문에 0!은 비어있는 경우의 수 (empty or zero set), 즉 1가지가 되어 0! = 1로 정의하고 있다.

좋은 웹페이지 즐겨찾기