#include using namespace std; template struct Factorial { Factorial prefact; const int value; Factorial() : value (n * prefact.value) { }; template friend ostream& operator<<(ostream& outputStream, const Factorial &obj); }; template ostream& operator<<(ostream& outputStream, const Factorial &obj) { outputStream << obj.value << ',' << obj.prefact; return outputStream; } template struct Factorial { int value; Factorial() : value(1) { }; friend ostream& operator<<(ostream& outputStream, const Factorial &obj); }; ostream& operator<<(ostream& outputStream, const Factorial &obj) { outputStream << obj.value; return outputStream; } int main(int argc, char** argv) { Factorial fact; cout << fact << endl; return 0; }
[editar] Antes había escrito el código para devolver solo el factorial final, ahora el código devuelve todos los factoriales hasta N. No noté la pregunta correctamente al principio. [/ edit]