The Factorial Function of a positive integer, n, is defined as the product of the sequence n, n-1, n-2, …1 and the factorial of zero, 0, is defined as being 1.
Write a function to return the factorial of a number. Solutions can be iterative or recursive. Support for trapping negative n errors is optional.
The C versions work unchanged with C++, however, here is another possibility using the STL and boost:
#include <boost/iterator/counting_iterator.hpp> #include <algorithm> int factorial(int n) { // last is one-past-end return std::accumulate(boost::counting_iterator<int>(1), boost::counting_iterator<int>(n+1), 1, std::multiplies<int>()); }
Iterative
This version of the program is iterative, with a do-while loop.
long long int Factorial(long long int m_nValue) { long long int result=m_nValue; long long int result_next; long long int pc = m_nValue; do { result_next = result*(pc-1); result = result_next; pc--; }while(pc>2); m_nValue = result; return m_nValue; }
Content is available under GNU Free Documentation License 1.2.