You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Excel VBA中实现基于参数的可变层数嵌套求和?

离散破产概率精确计算的VBA函数扩展问题

我正在完成概率课程的作业,需要编写一个Excel VBA函数prob_ruine_discret_exacte,该函数需根据参数k实现可变层数的嵌套求和。目前我已实现了k=1、2、3时的计算逻辑,但不清楚如何将其扩展到k为大于3的任意自然数的情况。我不需要精确答案,希望能找到类似案例,或是了解更清晰的问题表述方式;如果实现难度极大,也请告知,我可能需要调整思路。

以下是我已编写的代码:

Function prob_ruine_discret_exacte(u As Integer, k As Integer, prime As Integer, probas() As Variant) As Double
    'sum of probas = 1 with each value smaller than 1
    
    Dim sumProb(1 To k) As Variant
    Dim h(1 To k) As Long
    
   sumProb = 0
   
   If k = 1 Then
    For h(1) = 0 To WorksheetFunction.Min(u + prime, UBound(probas))
        sumProb(1) = sumProb(1) + probas(h(1))
    Next
   End If
   
    If k = 2 Then
        For h(2) = 0 To WorksheetFunction.Min(u + prime, UBound(probas))
            sumProb(2) = sumProb(2) + sumProb(1) * probas(u + prime - h(2))
            sumProb(1) = 0
            For h(1) = 0 To WorksheetFunction.Min(h(2) + prime, UBound(probas))
                sumProb(1) = sumProb(1) + probas(h(1))
            Next
        Next
   End If
   
   If k = 3 Then
        For h(3) = 0 To WorksheetFunction.Min(u + prime, UBound(probas))
            sumProb(3) = sumProb(3) + sumProb(2) * probas(u + prime - h(3))
            sumProb(2) = 0
            For h(2) = 0 To WorksheetFunction.Min(l + prime, UBound(probas))
                sumProb(2) = sumProb(2) + sumProb(1) * probas(l + prime - h(2))
                sumProb(1) = 0
                For h(1) = 0 To WorksheetFunction.Min(h(2) + prime, UBound(probas))
                    sumProb(1) = sumProb(1) + probas(h(1))
                Next
            Next
        Next
   End If
  prob_ruine_discret_exacte = 1 - (sumProb(k))
End Function

内容的提问来源于stack exchange,提问作者Victor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 23:42:42