Chinaunix首页 | 论坛 | 博客
  • 博客访问: 474215
  • 博文数量: 117
  • 博客积分: 3195
  • 博客等级: 中校
  • 技术积分: 1156
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-04 01:44
文章分类

全部博文(117)

文章存档

2012年(5)

2011年(5)

2010年(46)

2009年(61)

我的朋友

分类: C/C++

2010-03-16 10:22:21



最近总是做到数学题,总是不会,我这数学白痴!
“Bell数,又称为贝尔数。
是以埃里克·坦普尔·贝尔(Eric Temple Bell)为名的。

B(n)是包含n个元素的集合的划分方法的数目。

B(0) = 1, B(1) = 1, B(2) = 2, B(3) = 5,
B(4) = 15, B(5) = 52, B(6) = 203,...

递推公式为,
B(0) = 1,
B(n+1) = Sum(0,n) C(n,k)B(k). n = 1,2,...

其中,Sum(0,n)表示对k从0到n求和,C(n,k) = n!/[k!(n-k)!]  ”
              ——来自网络

这里网上都是这么写,原来是 B(n+1) = C(n, 1) * B(1) + C(n, 2) * B(2) + ...C(n, k) * B(k)... +
c(n, n) * B(n).


C(n, k) = n! /
[k!(n-k)!]
= n * (n-1) * ... * (n-k+1) * (n-k)! / [k! (n-k)!]
= n * (n-1) * ... * (n-k+1) / k !

long long bell(int n)
{
    long long t = 0;
    int i;
    if(n == 0)
        return 1;
    else
    {
        for(i=0; i<n; i++)
            t += c(n - 1, i) * bell(i);
    }
    return t;
}    


阅读(741) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~