如何在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
相关产品推荐
相关产品推荐

