混沌的解决(基础部分)
a(n)=n*a(n-1)+n
采用以前的直推法,可以得到a(n)的通项公式为:
a(n)=n!*{ e+a(0) },所以这里混沌的本质是由a(0)引起的,
我们在这里假设a(0)=init,然后进行实验;
下面写程序来证明:
(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))
(setq init 1.0)
(defun expr (n)
(if (eq n 0)
init
(+ (* n
(expr (1- n)))
n)))
(setq e 2.7182818284)
(defun formula (n)
(* (slayer n)
(+ e
init)))
(defun test (n)
(if (> n 0)
(progn
(print (expr n))
(print 'compare)
(print (formula n))
(test (- n 1)))
(print 'over)))
(test 10)
n的值越大,两者的值越吻合。
用(setq init 10.0),当n的值越大,两者的值越吻合。