playground/cpp/tmp/factorial.cpp

47 lines
889 B
C++

#include<iostream>
#include<list>
template<unsigned n>
struct factorial {
enum { val = n * factorial<n-1>::val };
};
template<>
struct factorial<0> {
enum { val = 1 };
};
int main() {
std::cout << factorial<0>::val << std::endl;
std::cout << factorial<1>::val << std::endl;
std::cout << factorial<2>::val << std::endl;
std::cout << factorial<3>::val << std::endl;
std::cout << factorial<4>::val << std::endl;
std::cout << factorial<5>::val << std::endl;
std::cout << factorial<6>::val << std::endl;
std::cout << factorial<7>::val << std::endl;
std::cout << factorial<8>::val << std::endl;
std::cout << factorial<9>::val << std::endl;
std::cout << factorial<10>::val << std::endl;
std::cout << factorial<11>::val << std::endl;
std::cout << factorial<12>::val << std::endl;
}
// Output
/*
1
1
2
6
24
120
720
5040
40320
362880
3628800
39916800
479001600
*/