재귀(Recursion)란?
🪄 컴퓨터 과학에서 재귀란 자신을 정의할 때 자기 자신을 재참조하는 방법을 의미합니다.
프로젝트를 진행하며 고차함수를 재귀함수로 계속 호출했던 경험이 있었습니다.
const NickName = () => {
return <NickName />
}
이를 통해 마이페이지가 렌더링되지 않는 문제가 발생했으며, 이 문제의 원인이 return 값으로 재귀함수를 계속 호출하고 있어 발생한 것임을 알게 되었습니다.
고차 함수 재귀 호출의 주요 문제점 중 하나는 성능과 메모리 사용량입니다. 재귀 호출이 많이 발생하면 Stack Overflow가 발생할 수 있습니다. 이는 각 재귀 호출마다 스택에 새로운 프레임이 추가되기 때문에 스택 메모리가 넘치게 되는 것입니다.
또한 고차 함수 재귀 호출을 사용할 때 호출 간에 중복된 작업이 많이 발생할 수 있습니다. 이는 성능 저하로 이어질 수 있으며, 이러한 문제를 해결하기 위해 메모이제이션과 같은 기술을 사용하여 중복된 계산을 줄이는 방법을 적용할 수 있습니다.
또 다른 문제는 가독성과 유지보수성입니다. 고차 함수 재귀 호출을 사용하면 코드가 간결해질 수 있지만, 때로는 이해하기 어려울 수 있습니다. 특히 함수가 복잡하고 다양한 상황에서 호출되는 경우 이해하기 어려울 수 있습니다.
따라서 재귀 함수를 작성할 때는 이러한 문제를 고려하여 코드를 최적화하고 가독성을 유지하는 것이 중요합니다.