재귀 함수

자기 자신을 호출하는 함수를 말하며 반복되는 처리를 위해 사용함

반복문 대신 재귀 함수를 이용할 수 있음

함수 내부에서는 본인의 함수 이름을 이용하여 재호출할 수 있음

재귀 함수는 자신을 무한하게 재귀 호출하기 때문에 호출을 멈추는 탈출 조건을 만들어야 함

그렇지 않으면 스택 오버플로우 에러 발생

예제)

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문을 사용하는 것보다 재귀함수 사용하는게 더 직관적일 경우에만

한정적으로 사용

이는 중첩된 반복문이 많거나 반복문의 중첩 횟수를 예측하기 어려울 경우