特殊的组合问题(基础部分)
设a(n)=C(n,0)+C(n,1)+C(n,2)+...+C(n,n)
先采用差分方程的角度来看:
a(n-1)=C(n-1,0)+C(n-1,1)+C(n-1,2)+...+C(n-1,n-1)
Go
a(n)-a(n-1)=C(n-1,0)+C(n-1,1)+C(n-1,2)+...+C(n-1,n-2) +C(n,n)
Go
a(n)-a(n-1)=C(n-1,0)+C(n-1,1)+C(n-1,2)+...+C(n-1,n-2) +C(n-1,n-1)
Go
a(n)-a(n-1)=a(n-1)
GO
a(n)=2*a(n-1)
又因为a(1)=C(1,0)+C(1,1)=2
所以a(n)=2^n
下面写程序来证明:
(defun pow (num count)
(if (or (> count 1) (eq count 1) )
(* num
(pow num
(- count 1) ) )
1))
(defun slayerex (num count)
(if (or (> count 1) (eq count 1) )
(* num
(slayerex
(1- num)
(- count 1) ) )
1))
(defun slayer ( count)
(if (or (> count 1) (eq count 1) )
(* count
(slayer
(- count 1) ) )
1))
(defun expr (init n)
(if (eq n 0)
1
(+ (expr init (1- n) )
(/ (slayerex init n)
(slayer n)))))
(defun test (n)
(if (> n 0)
(progn
(print (expr n n))
(print 'compare)
(print (pow 2 n))
(test (- n 1)))
(print 'over)))
(test 100)