[CodeKata] #15, 재귀를 사용하여 팩토리얼(factorial)을 구하는 함수를 구현

April·2021년 5월 16일
0
post-thumbnail
post-custom-banner

재귀 알고리즘

오늘은 재귀알고리즘에 대한 문제입니다.
재귀(recursion)란, 자신을 정의할 때 자기 자신을 호출하는 방법을 뜻합니다. 프로그래밍의 함수정의에서 많이 사용됩니다.

예)

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

countdown(10);

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

그래서 재귀함수는 아래의 절차가 꼭 필요합니다.
언제 멈출것인가?

위를 고려해 0이 되면 더이상 재귀를 이어나가지 않도록 종료 조건을 추가하겠습니다.

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

  if (n === 0) return;

  countdown(n-1);
}

countdown(10);

재귀의 이론은 위와 같이 아주 간단합니다. 재귀를 더 공부하고 싶은 분은 인터넷에 재귀 문제를 찾아 더 풀어보셔도 좋고, 알고리즘 책에서 재귀 부분만 더 읽으셔도 좋습니다.

문제

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


💡 풀이

  1. 인자가 1 또는 0 일때의 처리먼저 해두고
  2. 1부터 인자까지의 수를 모두 곱하기 = n * factorial(n-1)

✅ test case 하나를 통과 못한 나의 코드

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

console.log(factorial(0));

🎈 What i learned

  • 왜! 왜 하나가 통과 못한 것이냐!!!!!! 😭😭😭

profile
🚀 내가 보려고 쓰는 기술블로그
post-custom-banner

0개의 댓글