嗨,我看到Killer发布了一个简单的阶乘函数,该函数可以计算多达13个!,那么,您可以通过更改变量类型将其用于更大的数字。
为什么是这样?
您可以对整数使用阶乘(应该是输入),输出可以是字符串或双精度数,无论如何您都将拥有阶乘。 唯一的限制是在输入中。
是的,我的意思是此功能适用于最大170的值! 或类似的东西:
Public Function Factorial(ByVal bNum As Integer) As Double
Dim I As Double
If bNum <= 0 Then Exit Function
Factorial = 1
For I = 1 To bNum
Factorial = Factorial * I
Next
End Function
VB还可用于制作一些更复杂的功能,例如Gamma。
什么是伽玛?
Gamma函数是阶乘函数的泛化(这意味着您可以在其中使用任何正数)。 如果将Gamma用作整数,它将为您提供上一个整数的阶乘。 即:
G(5)= 4! = 24
好处是,即使您不能拥有4.25! ,您总可以拥有
G(5.25)= 35.2088612458766
凉!!!
要获得它,可以使用许多数值方法。 在这里,我使用了Euler-Mascheroni的一个老朋友。
Public Function Gamma(ByVal Dou1 As Double) As Double
Dim I As Integer
Dim Dou2 As Double
Dim Dou3 As Double
If Fix(Dou1) = Dou1 Then
If Dou1 = 0 Or Dou1 = 1 Then
Gamma = 1
Exit Function
Else
Dou2 = 1
For I = 1 To Dou1 - 1
Dou2 = Dou2 * I
Next
Gamma = Dou2
Exit Function
End If
ElseIf Dou1 > 3 Then
Dou2 = 1
For I = 1 To (Fix(Dou1) - 1)
Dou2 = Dou2 * (Dou1 - 1)
Dou1 = Dou1 - 1
Next
Dou3 = Exp(-0.57721566 * Dou1) / Dou1
For I = 1 To 9999
Dou3 = Dou3 * ((1 + (Dou1 / I)) ^ (-1)) * Exp(Dou1 / I)
Next
Dou3 = Dou2 * Dou3
Gamma = Dou3
Else
Dou3 = Exp(-0.577215664901533 * Dou1) / Dou1
For I = 1 To 9999
Dou3 = Dou3 * ((1 + (Dou1 / I)) ^ (-1)) * Exp(Dou1 / I)
Next
Gamma = Dou3
End If
End Function
我希望这在下次处理某人的作业时可能会有用。
卡德
From: https://bytes.com/topic/visual-basic/insights/662194-factorial-gamma-functions-vb