자기 자신을 호출하는 함수를 말하며 반복되는 처리를 위해 사용함
반복문 대신 재귀 함수를 이용할 수 있음
함수 내부에서는 본인의 함수 이름을 이용하여 재호출할 수 있음
재귀 함수는 자신을 무한하게 재귀 호출하기 때문에 호출을 멈추는 탈출 조건을 만들어야 함
그렇지 않으면 스택 오버플로우 에러 발생
예제)
function recursion(n) {
if (n <= 0) {
return 0;
}
return n + recursion(n - 1);
}
console.log(recursion(238)); // 28441
console.log(recursion(100)); // 5050
재귀함수는 반복문 없이도 반복 처리를 구현할 수 있다는 장점이 있으나 무한 반복에 빠질 위험이 있고
더 나아가 이로 인해 스택 오버플로우 에러를 발생 시킬 수 있으므로 주의
따라서 반복문인 for문과 while문을 사용하는 것보다 재귀함수 사용하는게 더 직관적일 경우에만
한정적으로 사용
이는 중첩된 반복문이 많거나 반복문의 중첩 횟수를 예측하기 어려울 경우