#include <iostream>
#include <functional>
int main()
{
	std::function<int(int)> factorial = [&factorial](int n) -> int
	{
		if(n == 0)
			return 1;

		return n * factorial(n - 1);
	};

	std::cout << factorial(5) << std::endl;
	return 0;
}