VB题目s=1-1/2!+1/3!-1/4!+...-1/n!≈ 要求用do loop

 我来答
K_BEAT
2016-11-20 · TA获得超过1245个赞
知道小有建树答主
回答量:879
采纳率:91%
帮助的人:404万
展开全部

通用求阶乘的参考代码:

Public Function MyFunc(ByVal AddFrom As Long, _
                       ByVal AddTo As Long) As Single
    If AddFrom < AddTo Then
        MyFunc = AddFrom * MyFunc(AddFrom + 1, AddTo)
    Else
        MyFunc = AddFrom
    End If
End Function


Form_Load 代码(Do...Loop Until):

Private Sub Form_Load()
    Dim lngAddFrom As Long
    Dim lngAddTo As Long
    Dim lngLoop As Long
    
    Dim sngResult As Single
    
    lngAddFrom = 1
    lngAddTo = 5
    
    Do
        lngLoop = lngLoop + 1
        sngResult = sngResult + (-1) ^ (lngLoop + 1) * 1 / MyFunc(lngAddFrom, lngLoop)
    Loop Until lngLoop = lngAddTo
    
    Print "1/1!-1/2!+1/3!-1/4!+1/5!≈" & CStr(FormatNumber(sngResult, 4, vbTrue))
End Sub


Form_Load 代码(For...Next):

Private Sub Form_Load()
    Dim lngAddFrom As Long
    Dim lngAddTo As Long
    Dim lngLoop As Long
    
    Dim sngResult As Single
    
    lngAddFrom = 1
    lngAddTo = 5
    
    For lngLoop = lngAddFrom To lngAddTo
        sngResult = sngResult + (-1) ^ (lngLoop + 1) * 1 / MyFunc(lngAddFrom, lngLoop)
    Next
    
    Print "1/1!-1/2!+1/3!-1/4!+1/5!≈" & CStr(FormatNumber(sngResult, 4, vbTrue))
End Sub


上述两种方法演示了求出 n = 5 的结果:

1/1!-1/2!+1/3!-1/4!+1/5!≈0.6333

实际使用时可以修改 lngAddTo 参数

更多追问追答
追问
能简便点吗

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式