1. std::function 이용하기



먼저 std::function으로 변수를 선언해두고 lambda에서 캡쳐해가는 방법입니다.

간단한 방법이지만 std::function은 lambda만 쓰는 것보다 무겁기 때문에 다른 방법도 알아봅시다.



2. lambda만 사용하려면?



인자로 lambda 자신을 넘겨주는 방법입니다.

다만 값을 얻으려면 factorial(5, factorial) 이런 식으로 사용해야 되므로 좀 지저분해 보이는군요.

이것도 없애봅시다.



lambda로 한번더 감싸니 깔끔해졌네요^^

저만 그런가요ㅋㅋ



3. 성능 향상?



factorial 값을 얻을 때마다 재귀로 처리하는 건 너무 느려보이네요.

미리 계산한 값들을 캐시에 저장해놓고 나중에 똑같은 값을 요청하면 O(1)으로 빠르게 가져가면 됩니다ㅎㅎ