template <class T, int N> class Math{ public : static T factorielle(){ T a=N; return Math<T, N-1>::factorielle()*a; } }; template <class T> class Math<T, 0>{ public : static T factorielle(){ T a=1; return a; } };
#include <iostream> using namespace std; #include <gmpxx.h> typedef mpz_class Integer Integer factoriel (Integer n) { Integer i,b=1; for (i=1;i<=n;i++){ b=b*i; } return b; }