#include <iostream>


auto factorial(int x)
{
    auto recursiveFunction = [](auto recFunc, int n) -> int
    {
        if (n <= 1) return 1;
        else return n * recFunc(recFunc, n-1);
    };
    return recursiveFunction(recursiveFunction, x);
}

int main() {
	std::cout << factorial(4) << std::endl;
}