재귀의 설명 그대로 함수에서 자기 자신을 다시 호출해 작업을 수행하는 방식
즉, 재귀함수란 함수 안에 자신의 함수를 다시 호출하는 함수를 의미하며, 특정 분기까지 자기 자신을 계속해서 호출하는데, 주로 반복문을 구현할 때 사용한다.
int factorial(int n) {
if (n == 0) {
return 1;
}
else {
return n * factorial(n - 1);
}
}
void main() {
int number = 5;
printf("5! = %d\n", factorial(number));
}
위 코드에서 처음에 n은 5일것이고 factorial(n-1)은 4인데, 여기서 다시 factorial( )함수 안으로 들어갈 것이고 그럼 n은 4가 되고, factorial(n-1)은 3이 되는데, 함수를 호출했으니 다시 factorial( )함수 안으로 들어가고 n이 3이 되고, factorial(n-1)은 2가 되고... 함수 호출이 반복되면서 결국 factorial(n-1)이 0이 되면 if(n == 0)의 조건이 참이되면서 재귀 호출이 종료된다.
즉, 처음에 5 4!이 리턴되고, 그 안에는 4 3!이 리턴되고 또 안에서는 3 * 2!이 리턴되는 함수가 계속 반복되는 것이고, 이게 바로 "재귀함수"이다.
이 함수는 추후 JS의 콜백함수에서 사용되는 원리가 된다..........😢😢