更改-在Common Lisp中变为+

塞德杰

有没有办法将-(减号)功能更改+(加号)功能?

我的作业是在Macluaurin系列上执行正弦计算

sin(x) = x-(x^3/3!)+(x^5/5!) -(x^7/7!)+(x^9/9!)-...

每篇文章都有不同的符号。这是我的Lisp代码

(defun sinMac (x series n plusminus)
  (cond ((= series 0) 0)
        (t (funcall plusminus
                    (/ (power x n) (factorial n))
                    (sinMac x (- series 1) (+ n 2) plusminus)))))

可以更换plusminus交换标志吗?如果我得到'+函数,则发送'-到下一个递归调用。从那个电话(got '-)我打电话'+,依此类推...

克里斯·杰斯特·杨(Chris Jester-Young)

您可以使用循环列表来完成。像这样:

(defun sin-mac (x series n plus-minus)
  (cond ((zerop series) 0)
        (t (funcall (car plus-minus)
                    (/ (power x n) (factorial n))
                    (sin-mac x (1- series) (+ n 2) (cdr plus-minus))))))

(sin-mac x series 1 '#0=(+ - . #0#))

甚至更好的是,使用labels以下命令包装初始参数

(defun sin-mac (x series)
  (labels ((recur (series n plus-minus)
             (cond ((zerop series) 0)
                   (t (funcall (car plus-minus)
                               (/ (power x n) (factorial n))
                               (recur (1- series) (+ n 2) (cdr plus-minus)))))))
    (recur series 1 '#0=(+ - . #0#))))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

更改-在Common Lisp中变为+

来自分类Dev

在Common Lisp REPL中更改文本的颜色

来自分类Dev

在Common Lisp中更改方法分派

来自分类Dev

在Common LISP中更改字节宽度中间流

来自分类Dev

(组成)在Common Lisp中

来自分类Dev

Common Lisp中的'()vs()

来自分类Dev

#ifndef在Common Lisp中

来自分类Dev

Common Lisp中的功能范围

来自分类Dev

Common Lisp中的矩阵乘法

来自分类Dev

Common Lisp中的动态绑定

来自分类Dev

Common Lisp中的功能范围

来自分类Dev

Common Lisp 中的变量范围

来自分类Dev

在 common lisp 中获取“common-lisp:setf common-lisp:list* 未定义”

来自分类Dev

在LISP中更改列表的副本

来自分类Dev

从Common Lisp中的列表中删除项目

来自分类Dev

从Common Lisp中的列表中删除项目

来自分类Dev

如何在Common Lisp中映射功能?

来自分类Dev

在Common Lisp中调用函数列表

来自分类Dev

关于Common Lisp中的MERGE函数

来自分类Dev

为什么FEXPR被丢弃在Common Lisp中?

来自分类Dev

Common Lisp中的条件Windows注释

来自分类Dev

Common Lisp中的环境目的是什么?

来自分类Dev

在Common Lisp中创建隐藏文件

来自分类Dev

从Common Lisp中的SQLite捕获错误

来自分类Dev

在Common Lisp(CLOS)中列出对象方法

来自分类Dev

Common Lisp中的条件变量绑定

来自分类Dev

在Common Lisp中快速读取CSV

来自分类Dev

(漂亮)在Common Lisp中打印大对象

来自分类Dev

Common Lisp中的Python enumerate()模拟