Adedal 发表于 2016-1-26 14:42:50

菜鸟求助lisp问题

新手刚学lisp,有点晕,求帮忙
要求写一个功能,两个参数,第一个是一个表, 第二个是一个数字,然后从表里面把相加等于数字的加数列出来。

效果就像这样:
(alladders '(1 2 3) 5) => (2 3)
(alladders '(1 5 3) 2) => nil
(alladders '(1 16 2 8 4) 29) => (1 16 8 4)
(alladders '(1 1 5 6 8) 10) => (1 1 8)
(alladders '(1 12 19 70 200) 7) => nil


另外有要求只能用下面有的功能,或者自己写
(atom x)
(null x)
(eq x y)
(equal x y)
(numberp x)
(append x y)
(car x)
(cdr x)
(cons x y)
(if x y z)
(cond ... )
(let ((x y) (u v)) z)
(let* ((x y) (u v)) z)
(defun ...)
(quote x) 'x
(list x1 x2 ...)
(print ...)
(sort L fun)
(copy-list L)
(sort (copy-list L) sort-predicate)


感激不尽!

ll_j 发表于 2016-1-26 15:52:04

你这是跑错论坛了,这里讨论的是AutoLisp,也就是“依附于”AutoCAD的lisp,和通常的Lisp是不全相同的。
不过按照Lisp的通常方法,这种问题无法是编列加递归,很久没写程序了,也不想多费神了,就不多说了。
至于限制,建议可以先不看,先完成基本功能,再慢慢优化。

自贡黄明儒 发表于 2016-1-26 16:16:36

alladders用高数中的组合就行

陈进佳 发表于 2016-1-28 12:58:43

file:///C:/Users/usert/Desktop/jdfw.gif

陈进佳 发表于 2016-1-28 13:10:09

已解决,但是不是很完美
页: [1]
查看完整版本: 菜鸟求助lisp问题