简单的stirling数(实验)

简单的stirling数(实验)
这里假设容器是有区别的,数字也是有区别的。
假设n大于2,将这样的n个数放入到2个容器中,问有多少种放的方法?
有这样的推导思想,假设其中一个数放入到了任意一个容器中,那其它n-1个球中的每个球就有了两种选择方式,共有2^(n-1)种方式,不过要减去一种特殊情况,即后面n-1个球全部与第一个球放在一个格子的情况;所以共有2*{2^(n-1)-1}种情况




下面写程序来证明:
(defun  formula  (n)
(* 2
   (+ (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)))




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


[12]> (test  10)


1022
COMPARE
1022
510
COMPARE
510
254
COMPARE
254
126
COMPARE
126
62
COMPARE
62
30
COMPARE
30
14
COMPARE
14
6
COMPARE
6
2
COMPARE
2
OVER
OVER
注意前面推导过程中的思维方式,如果完全采用可以有空盒的推导方式,每个球有n个选择,故有2^n种方式,减去两个空盒的情况也可以得到正确答案;但前面的方式在通用以后也可以用到,因为它其中包括了一般递归思想;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值