쉽게 말해 자기자신을 호출하는 함수이다. 말이 쉽지 이 개념을 직접 코드를 작성해서 문제를 해결하려고 하면 너무 어렵다ㅠ 그래서 쪼개서 생각하는 게 좋다. 예를 들어 5!(5팩토리얼) 을 구한다고 생각해본다.
4! 은 4 x 3 x 2 x 1 이다. 그런데 4!은 구하기가 어려운 것 같다. 그럼 쪼개보자. 따지고 보면 4! 은 4 x 3! 이다.
3! 은 3 x 2 x 1 이다. 이것 또한 쪼개보면 3 x 2! 로 볼 수 있다.
이미지로 생각해보면 아래와 같다. 이 이미지를 계속 생각하면서 문제들을 진행하는게 여러모로 도움이 됐던 거 같다.
위와 같은 경우에 재귀함수를 쓰면 된다고 한다. 그러나 어떨 때는 반복문을 쓰는게 효율적일 때도 있고, 어떨 때는 반복문보다는 재귀를 이용하는게 효율적일 때도 있다. 그래서 적절하게 잘 써야 하는 것 같다.
❗스택오버플로우 현상
재귀 함수는 호출 시 마다 스택 공간에 뭔가를 저장하기 때문에, 무리하게 호출하면 '스택 오버플로우'가 발생할 수 있음
재귀함수에 대한 기본 개념은 이정도로 하고 기본문제들을 풀면서 익히는 게 훨씬 좋은 듯 하다.