简单的stirling数(联系)

本文探讨了Stirling数的概念,并通过程序验证了有区别的n个球放入盒子与无区别的n+1个球放入盒子之间的联系。利用递归算法实现了这一验证过程,展示了如何通过编程手段解决组合数学中的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单的stirling数(联系)
考虑这样一种情况,将容器的有区别与无区别通过这样一种方式连接起来;假设要求对于n个球放入有区别的盒子中,我们可以假设是将n+1个球放入无区别的盒子中,因为在这种情况下,需要选择支点,如果恰好将最后加进来的那个球做为支点后,其它的计算过程就类似了;
我们可以做如下计算的推导:
对于无区别的n+1个球
2^(n+1-1)-1=2^n-1
对于有区别的n个球
2^n-2,注意在这种情况下,如果要联系到无区别的情况,需要考虑当剩下的n个球与支点在一个盒子的时候不应该被视为非法的,所以应该再加上1,所以可以看出两者的相等。






下面写程序来证明:
(defun  formula  (n)
(+ (pow  2  
         (1- n))
   -1))


(defun pow (num count)
(if (or (> count 1) (eq  count  1) )
      (* num 
         (pow num 
              (- count 1) ) )
      1))


(defun slayer ( count)
(if (or (> count 1) (eq  count  1) )
      (* count 
         (slayer  
              (- count 1) ) )
      1))


(defun  expr (n  AContain  BContain )
(if  (>  n  0)
      (+  (expr (1- n)
                (1+ AContain )
                BContain) 
          (expr (1- n)
                AContain
                (1+ BContain))) 
      (if (or (eq  AContain 0)
              (eq  BContain 0))
              0
              1)))


特别注意其中expr参数的变化


(defun  test (n)
(if (> n 1)
  (progn 
       (print (expr (1- (1+ n))  1  0))
       (print  'compare)
       (print (1+ (expr n  0  0)))      
       (test (- n 1)))
  (print 'over)))


[21]> (test  10)


1023
COMPARE
1023
511
COMPARE
511
255
COMPARE
255
127
COMPARE
127
63
COMPARE
63
31
COMPARE
31
15
COMPARE
15
7
COMPARE
7
3
COMPARE
3
OVER
OVER
思维:从这里可以见到我们的假定是正确的,因为这个计算过程是采用程序计算的,其中并没有数学公式推导的痕迹。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值