您的位置:首页 > 其它

编写阶乘计算精确值的自定义函数

2010-05-11 13:06 429 查看
整体思路就是利用数组存放每一位数字,模拟乘法规则进行计算。

Function MyFact(DNumber)
Dim ArrJG, ArrTemp
Dim SumA As Double
Dim i&, j&
Dim strJG$  '结果输出
'计算阶乘长度
SumA = 1
For i = 1 To DNumber
SumA = Log(i) / Log(10) + SumA
Next i
ReDim ArrJG(Int(SumA) - 1)
ReDim ArrTemp(UBound(ArrJG))
'初始化结果数组
ArrJG(0) = 1
'计算阶乘结果
For i = 2 To DNumber
For j = 0 To UBound(ArrJG)
ArrTemp(j) = ArrJG(j) * i
Next j
j = 0
Do While j <= UBound(ArrJG)
ArrJG(j) = ArrTemp(j) Mod 10
If ArrTemp(j) >= 10 Then ArrTemp(j + 1) = ArrTemp(j + 1) + ArrTemp(j) / 10
j = j + 1
Loop
Next i
'结果输出
For i = UBound(ArrJG) To 0 Step -1
strJG = strJG & ArrJG(i)
Next i
MyFact = strJG
End Function


用以下代码看一下结果:

Sub Test()
MsgBox MyFact(100)
End Sub


结果如下:



请参考下贴:

100的阶乘的结果的每位数之和等于多少? http://www.exceltip.net/thread-7618-1-1-11314.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  function
相关文章推荐