斯巴林在vba第二类

我在VBA中创build了一个代码来计算第二种斯特林数组合的数量。 但在下面的例子中,只有一半的值是正确的。


如果n等于4,结果应该是1,7,6,1。( 维基百科斯特林编号

我得到1,7,6.5,4.16

Sub stirlingerzahlen() Dim n As Integer Dim sum As Double Dim subsum As Double Dim k As Long Dim j As Long n = 4 For k = 1 To n Step 1 For j = 0 To k Step 1 subsum = 1 / Application.WorksheetFunction.Fact(k) * (-1) ^ (k - j) * Application.WorksheetFunction.Fact(k) / Application.WorksheetFunction.Fact(j) * j ^ n sum = sum + subsum Next Sheets("Tabelle2").Cells(k, 1) = sum sum = 0 Next End Sub 

有人能find这个错误吗?

还有另一个版本的公式似乎更容易实现:

http://home.mathematik.uni-freiburg.de/junker/ss10/DAS-SS10.pdf (第13页)

在这里输入图像说明

这里更新的代码:

 Sub stirlingerzahlen() Dim n As Integer Dim sum As Double Dim subsum As Double Dim k As Long Dim j As Long n = 4 For k = 1 To n Step 1 For j = 0 To k subsum = (((-1) ^ (k - j)) * ((j ^ n) / (Application.WorksheetFunction.Fact(j) * Application.WorksheetFunction.Fact(k - j)))) sum = sum + subsum Next Sheets("Tabelle2").Cells(k, 1) = sum sum = 0 Next End Sub