海尔冰箱bcd 450wdgd:VB求N的阶乘怎么做啊?快(详细的)

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 11:01:27
我要那中复制上去能OK的那种
怎么调用啊?调在什么地方啊?

递归法,下面这个是个编写出来的阶乘函数,直接调用就可以了

Private Function jiecheng(n As Integer) As Integer
If n = 1 Then
jiecheng = 1
Else
jiecheng = n * jiecheng(n - 1)
End If
End Function

下面是求大数的阶乘的方法,避免溢出

Public Function Factorial(intC As Integer) As String
On Error GoTo myErr:
Dim intA() As Integer, intT() As Integer, i As Integer
Dim j As Integer, intR As Integer
ReDim intA(20), intT(20)
If intC < 2 Then Exit Function
intR = 20
intA(0) = 1
For i = 2 To intC
For j = 0 To intR
intT(j) = intA(j) * i
Next j
j = 0
Do Until j > intR
intA(j) = intT(j) Mod 10
If intT(j) >= 10 Then intT(j + 1) = intT(j + 1) + intT(j) \ 10
j = j + 1
Loop
Next i

Do While True
j = j - 1
If intA(j) > 0 Then Exit Do
Loop

For j = j To 0 Step -1
Factorial = Factorial & intA(j)
Next j
Exit Function
myErr:
If Err.Number = 9 Then
intR = intR + 20
ReDim Preserve intA(intR)
ReDim Preserve intT(intR)
Resume
Else
MsgBox "UnKnow ERR:" & Err.Description & ":" & Err.Number, vbCritical + vbOKOnly
End If
End Function

调用 a=Factorial(N)

一楼的调用 a= jiecheng(n)

i=1;
for j= 2 to n
i=i*j '连乘
next
msgbox i 'i