用于Lisp中余弦函数的Taylor系列

时间:2018-02-21 19:00:27

标签: lisp

我试图在lisp中构建一个Taylor系列,如下图所示。

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))))))

使用此代码将导致以下错误

  

错误:未绑定的功能 - X

我是lisp中的新手,所以任何帮助都将受到赞赏:D

1 个答案:

答案 0 :(得分:3)

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)))))