WWDC의 자동 메모이제이션 코드 분석

시간이 오래 걸릴 수 있는 비싼 연산 작업이 있고, 이러한 연산을 반복해서 수행해야 하는 상황이 있을 때, 가장 손쉬운 성능 개선 방법은 연산 결과를 캐싱하는 것이다. 연산을 수행하는 함수가 입력이 같을 때 출력이 같은 것이 보장되는 순수한 함수라면, 재계산을 수행하는 것보다 캐시된 내용을 읽어와서 사용하는 것이 훨씬 빠른 것은 자명한 사실이다. 메모이제이션(Memoization) 실제로 이런 종류의

재귀호출과 피보나치 수열 탐구

재귀호출은 함수가 그 내부에서 자신을 다시 호출하는 것이다. 이는 언뜻 이상하게 보일 수 있고, 경우에 따라서는 의도치 않은 동작을 하게 할 수 있어서 일반적으로는 지양되는 방법이기는 하나, 대신에 코드가 짧아질 수 있고 실행 로직 자체가 어느 정도 제한된 경우라면 충분히 사용할 수 있다. 특히 하스켈과 같은 함수형 언어에서는 반복문을 돌리는 로직이 없기 때문에 재귀호출을 하는