재귀를 사용하여 함수를 구현

문제

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

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

정답

const factorial = n => {
  //탈출조건
  if(n === 0) return 1;
  //실행문
  return n * factorial(n - 1);
}

코드 줄이기 =>

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

풀이

  • 재귀함수는 자기 자신을 호출하는 함수
  • 재귀를 적용할 수 있는 대부분의 경우에는 재귀를 사용하는 것이 코드가 더욱 간결해지고 이해하기가 쉽다.

재귀함수를 사용하는 경우
1. 비슷한 구조의 더 작은 문제로 나눌 수 있는 경우
2. 중첩된 반복문이 많거나 반복문의 중첩 횟수를 예측하기 어려운 경우

재귀함수 사용법

  • 탈출조건과 실행문의 경우를 나누어 생각한다.
  • while로 비교시 while안의 조건문이 탈출조건으로 쓰이고, 실행문이 실행문으로 쓰인다고 생각하면 쉽다.

좋은 웹페이지 즐겨찾기