재귀함수는 다음과 같이 자기 자신을 호출하는 함수이다.
function recursive(word){
console.log(word);
return recursive("hi");
}
이렇게 선언한 뒤, 실행시키면 자기 자신을 끝도 없이 호출하기 때문에 Stack Overflow Error를 만나게 된다.
그래서 재귀함수는 자기 자신을 통제해줄 exit condition
이 반드시 필요하다.
재귀함수를 설명하는 예시로 가장 많이 보이는 것이 바로 팩토리얼 구하기
이다.
팩토리얼이란, N이 있을 때 1부터 N까지 순서대로 1씩 늘려가며 곱한 값이라고 정의할 수 있다.
코드로 나타내보자.
function Factorial(n){
if(n === 1) return 1;
return n * Factorial(n-1);
}
위와 같은 팩토리얼 구하기를 보면 알 수 있듯이, 조건문을 사용해서 exit condition
을 만들어 무한 호출을 방지한다.
보통 재귀함수로 구현할 수 있는 기능은 반복문을 사용해서 구현할 수 있기 마련인데, 왜 재귀함수를 사용할까?
재귀함수를 사용했을 때 가독성이 훨씬 더 좋아지는 경우가 있기 때문이다.
위의 팩토리얼을 반복문을 사용해서 나타내보자.
function Factorial(n){
let sum = 1;
for(let i = 1; i <= n; i++){
sum = sum * i;
}
return sum;
}
보다시피, 코드가 더 길어져 가독성이 떨어진데다가 변수 또한 추가로 선언해서 사용해야 한다.