Factorial – The factorial of a number

' The factorial of a number'' if NUMBER is negative or >170 it raises an' "subscript out of range" errorFunction Factorial(ByVal number As Long) As Double    Static result(170) As Double        ' this routine is very fast because it    ' caches all the possible results    If result(0) = 0 Then        ' this is the first time it is executed        Dim i As Long        result(0) = 1        ' Factorial(170) is the highest factorial        ' value that can be stored in a Double        For i = 1 To 170            result(i) = result(i - 1) * i        Next    End If        ' just read the result from the cached array    Factorial = result(number)        End Function' *** UPDATE ***' Rick Rothstein (MVP-VB) sent us the following update for the Factorial ' function. It reports whole number results up to an argument value of 27 (a 29-' digit answer containing 23 significant digits) before switching to power-of-' ten notation.' The factorial of a number'' if NUMBER is negative or >170 it raises an' "subscript out of range" errorFunction Factorial(ByVal N As Integer) As Variant    Static Result(170) As Variant    Dim X As Integer    ' this routine is very fast because it    ' caches all the possible results    If Result(0) = 0 Then        ' convert to Decimal data type        Result(0) = CDec(1)        ' Factorial(170) is the highest factorial        ' value that can be stored in a Double        For X = 1 To 170            ' for X<28, calculate using Decimal data            ' type; use Double data type afterwards            If X = 28 Then                Result(28) = 28 * CDbl(Result(27))            Else                Result(X) = X * Result(X - 1)            End If        Next    End If    ' just read the result from the cached array    Factorial = Result(N)End Function

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.