在 Matlab 中计算贝尔数

Compute Bell numbers in Matlab

这是我已经实现的:

function B = bell(n)
B(1,1) = 1;
for i=2:n
    B(i,1) = B(1,end);
    for j = 1:i-1
        B(i-j,j+1) = B(i-1,j)+B(i,j);
    end
end
end

当n=3时,我得到:

 1     2     3
 1     3     0
 2     0     0

而不是:

 1     2     5
 1     3     0
 2     0     0

您需要换行

B(i-j,j+1) = B(i-1,j)+B(i,j);

进入

B(i-j,j+1) = B(i-j+1,j)+B(i-j,j);

示例:对于 n=5

B =
     1     2     5    15    52
     1     3    10    37     0
     2     7    27     0     0
     5    20     0     0     0
    15     0     0     0     0

按照this.