calculation of factorial using different facilities of C++ language

I’ve collected all known techniques to calculate factorial using C++. Enjoy 🙂

1. using free function
int f(int n)
{
return n <= 1 ? 1 : n * f(n – 1);
}

int x = f(42);

2. using lambdas
std::function f = [&f](int n) -> int
{
return n <= 1 ? 1 : n * f(n – 1);
};

int x = f(42);

3. using constexpr
constexpr int f(int n)
{
return n <= 1 ? 1 : n * f(n – 1);
}

const int x = f(42);

4. using templates

template
struct factorial
{
enum { value = N * factorial::val; };
};

template
struct factorial
{
enum { value = 0; }
};

const int x = Factorial::value;

Advertisements