VB的阶乘和伽马函数

本文探讨了在VB中如何实现阶乘函数,能够处理大数值,并介绍了伽马函数作为阶乘函数的泛化形式,允许计算非整数的阶乘。通过Euler-Mascheroni公式,可以实现伽马函数的数值计算,扩展了阶乘的应用范围。
摘要由CSDN通过智能技术生成

嗨,我看到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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值