В математике факториал положительного целого числа N
, обозначаемого N!
, является произведением всех положительных integers
, меньших или равных N
:
N!=N*(N-1)*(N-2)*(N-3)*.......*1
+-------------------------+
notice that this is: (N-1)! <==> So, N! = N*(N-1)!
мы Эти математические факты можно использовать для реализации факториальной функции в двух различных формах, подходах recursive
и iterative
:
рекурсивный подход
size_t rec_factorial(size_t n)
{
/*Base case or stopping condition*/
if(n==0)
{
/* 0! = 1 */
return 1;
}
/*n! = n * (n-1)!*/
return n * rec_factorial(n-1);
}
итерационный подход
size_t factorial(size_t n)
{
size_t j = 1;
size_t result = 1;
while(j <= n){
result *= j; /* n!=n*(n-1)*(n-2)*(n-3)*....1 */
++j;
}
return result;
}