直接推导获得解答
f(n)=n*f(n-1)+n!,其中f(0)=0
求f(n)的通项公式?
采用直接推导法有:
f(n)=n * { (n-1)*f(n-2)+(n-1)! } +n!
Go
f(n)=n * (n-1)* { (n-2)*f(n-3)+(n-2)! } +n!+n!
Go
f(n)=n * (n-1)*(n-2) *{ *f(n-3) } +n!+n!+n!
...
Go
f(n)=n*n!
对于这个结果也可以采用数学归纳法证明;
下面写程序来证明:
(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)
(if (eq n 0)
0
(+ (* n
(expr (1- n)))
(slayer n))))
(defun formula (n)
(* n
(slayer n)))
(defun test (n)
(if (> n 0)
(progn
(print (expr n))
(print 'compare)
(print (formula n))
(test (- n 1)))
(print 'over)))
(test 10)
结果是对的。