我正在尝试用 lisp 构建泰勒级数,如下图所示。
1 + x^1/1! + x^2/2! + x^3/3!.....etc
幂函数和阶乘函数已经实现,以便在泰勒函数中使用它们。
目前我编写了以下初始代码来求解方程。
(defun taylor(x n)
(if (= n 0) 1
(+ (/ (power x n) (factorial n)) (taylor(x (- n 1))))))
使用这段代码会出现如下错误
error: unbound function - X
我是 lisp 的新手,所以任何帮助将不胜感激 :D
taylor
前面多了一个括号;也就是说,您需要将其称为 (taylor x n)
而不是 (taylor (x n))
。
一般来说,如果您适本地缩进代码,就会更容易发现此类错误,例如以下
(defun factorial (n)
(if (= n 1)
1
(* n (factorial (1- n)))))
(defun power (x n)
(if (= n 1)
x
(* x (power x (1- n)))))
(defun taylor (x n)
(if (= n 0)
1
(+ (/ (power x n)
(factorial n))
(taylor x (- n 1)))))
我是一名优秀的程序员,十分优秀!