  Advertiser Disclosure
 TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK Specialized Dev Zones Research Center eBook Library .NET Java C++ Web Dev Architecture Database Security Open Source Enterprise Mobile Special Reports 10-Minute Solutions DevXtra Blogs Slideshow    Home » Tip Bank » .NET » VB.NET » Math Processing
Language: VB4,VB5,VB6,VBS
Expertise: beginner
May 27, 2000

### WEBINAR:On-Demand

Building the Right Environment to Support AI, Machine Learning and Deep Learning

# Factorial - The factorial of a number

``````' The factorial of a number
'
' if NUMBER is negative or >170 it raises an
' "subscript out of range" error

Function 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" error
Function 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
``````
Francesco Balena Submit a Tip Browse ".NET" Tips Browse All Tips   Comment and Contribute

(Maximum characters: 1200). You have 1200 characters left.    Thanks for your registration, follow us on our social networks to keep up-to-date