(defun helper-2 (list)
(if (null (first (rest list)))
0)
(+ (distance ((car list) (first (rest list))))
(helper-2 (rest list))))我是lisp的新手,我正在编写一个程序来计算任意多边形的周长,并按顺时针顺序输入。我的逻辑是,我使用一种辅助方法来计算彼此相邻两个点的长度,然后进行和。在完成递归之后,我将执行一个单独的调用来计算从起点到终点的长度,并对所有的内容进行汇总。我已经完成了距离法,它取2分,并返回长度。
(distance '(2 0) '(4 0)) ;this will output 2助手-2逻辑:假设我们有3点a (2 0) b (3 3) c (4 0),这个方法可以用来总结ab和bc之间的距离。然而,我不断得到“(车头)应该是一个lambda表达式”错误。有人能帮忙吗?谢谢。或者有人能给我一个更好的方法来计算多边形的周长?
(defun square (n) (* n n))
(defun distance (a b)
(let ((h (- (second b) (second a)))
(w (- (first b) (first a))))
(sqrt (+ (square h) (square w)))))发布于 2014-11-15 02:50:35
您的helper-2函数有两处错误:
if,这样它就可以作为if/else运行。(car list)的括号太多了。以下是固定版本:
(defun helper-2 (list)
(if (null (first (rest list)))
0
(+ (distance (car list) (first (rest list)))
(helper-2 (rest list)))))https://stackoverflow.com/questions/26941771
复制相似问题