Factorial Algorithm

The Factorial Algorithm is an essential mathematical function that computes the factorial of a given non-negative integer, which is denoted as n!. Factorial of a number n is the product of all positive integers less than or equal to n, and it is a crucial concept in combinatorics, algebra, and calculus. In simple terms, n! represents the total number of ways to arrange n distinct items, making it a core concept in permutation and combination problems. The algorithm is defined as n! = n * (n-1) * (n-2) * ... * 1, where the factorial of 0 (0!) is defined as 1 by convention. There are several ways to implement the Factorial Algorithm, including iterative, recursive, and divide-and-conquer approaches. The iterative approach involves using a loop to multiply the numbers from 1 to n, while the recursive approach uses a function that calls itself with decreasing values of n until it reaches 1 or 0. The divide-and-conquer approach, on the other hand, recursively breaks down the problem into smaller subproblems and combines their solutions to obtain the final result. The Factorial Algorithm has numerous applications in mathematics, computer science, and real-world problems, such as calculating probabilities, counting permutations and combinations, solving differential equations, and evaluating complex integrals.
using System;

namespace Algorithms.Numeric
{
    /// <summary>
    /// The factorial of a positive integer n, denoted by n!,
    /// is the product of all positive integers less than or equal to n.
    /// </summary>
    public static class Factorial
    {
        /// <summary>
        /// Calculates factorial of a number.
        /// </summary>
        /// <param name="num">Input number.</param>
        /// <returns>Factorial of input number.</returns>
        public static long Calculate(int num)
        {
            if (num < 0)
            {
                throw new ArgumentException("Only for num >= 0");
            }

            return num == 0 ? 1 : num * Calculate(num - 1);
        }
    }
}

LANGUAGE:

DARK MODE: