Stirling number
第1種スターリング数および第2種スターリング数を計算してみた。
第1種については
「数の本」、「コンピュータの数学」
にある通り、符号なしで出力してみる。
# 符号は無視
def stirling(n, k = 1)
a = [1]
p [0, a]
(1..n).each{|i|
a << 0
b = [0]
(0..i - 1).each{|j|
if k == 2
b[j + 1] = a[j] + (j + 1) * a[j + 1]
else
b[j + 1] = a[j] + (i - 1) * a[j + 1]
end
}
a = b
p [i, a]
}
end
n = 10
stirling(n)
p ""
stirling(n, 2)
出力結果
[0, [1]]
[1, [0, 1]]
[2, [0, 1, 1]]
[3, [0, 2, 3, 1]]
[4, [0, 6, 11, 6, 1]]
[5, [0, 24, 50, 35, 10, 1]]
[6, [0, 120, 274, 225, 85, 15, 1]]
[7, [0, 720, 1764, 1624, 735, 175, 21, 1]]
[8, [0, 5040, 13068, 13132, 6769, 1960, 322, 28, 1]]
[9, [0, 40320, 109584, 118124, 67284, 22449, 4536, 546, 36, 1]]
[10, [0, 362880, 1026576, 1172700, 723680, 269325, 63273, 9450, 870, 45, 1]]
""
[0, [1]]
[1, [0, 1]]
[2, [0, 1, 1]]
[3, [0, 1, 3, 1]]
[4, [0, 1, 7, 6, 1]]
[5, [0, 1, 15, 25, 10, 1]]
[6, [0, 1, 31, 90, 65, 15, 1]]
[7, [0, 1, 63, 301, 350, 140, 21, 1]]
[8, [0, 1, 127, 966, 1701, 1050, 266, 28, 1]]
[9, [0, 1, 255, 3025, 7770, 6951, 2646, 462, 36, 1]]
[10, [0, 1, 511, 9330, 34105, 42525, 22827, 5880, 750, 45, 1]]