[wecode] Code Kata - JavaScript # 15 (Recursion)

hangkemiii·2022년 5월 28일
0

wecode

목록 보기
26/26
post-thumbnail
post-custom-banner

문제

재귀를 사용하여 팩토리얼(factorial)을 구하는 함수를 구현해주세요. 팩토리얼이란 1에서부터 n까지의 정수를 모두 곱한것을 말합니다.

1! = 1
2! = 1 * 2
5! = 1 * 2 * 3 * 4 * 5

내 풀이

재귀(recursion)란, 자신을 정의할 때 자기 자신을 호출하는 방법을 뜻한다.

const countdown = n => {
  console.log(n);
  countdown(n-1);
}

countdown(10);

countdown 함수는 받은 인자를 console로 출력한다. 그런데 위의 함수를 실행하면 10에서 시작해서 무한으로 마이너스 값까지 내려가게 된다.

그렇기 때문에 재귀함수는 종료 조건을 반드시 추가해야 한다.

const countdown = n => {
  console.log(n);

  if (n === 0) return;

  countdown(n-1);
}

countdown(10);

그러면 위와 같은 방식으로 문제를 풀어보도록 하자.

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

팩토리얼은 0이거나 1일때 1을 반환해야 하고, 그렇지 않으면 n x (n - 1)을 반복해야 하기 때문에 조건문으로 설정해 두었다.

profile
Front-End Developer
post-custom-banner

0개의 댓글