自行车内胎 发表于 2016-1-25 12:35:22

请问这个递归程序哪里出现了错误?提示:参数类型错误

(defun li5(a);本程序用以求和表中所有的数
(if (= a nil)(setq sum 0) (setq sum (+ (car a) li5(cdr a))))
)



;还有,递归可以用于命令吗?比如:
;(defun c:li5();本程序用以求和表中所有的数
;(setq a (getstring "请输入一个表"))
; (if (= a nil)(setq sum 0) (setq sum (+ (car a) li5(cdr a))))
;)

Gu_xl 发表于 2016-1-25 14:07:32

(defun f (a)
   (if a
       (+ (car a) (f (cdr a)))
       0
    )
)

ll_j 发表于 2016-1-25 14:34:26

递归有好多问题,不是一两句能说清楚的,我这里http://bbs.mjtd.com/thread-107136-1-1.html 有个帖子,有兴趣可以看看。
原则上,递归不能被用在外部函数(命令)。
对表求和不是使用递归,正确的方法应该是(apply '+ a)。
页: [1]
查看完整版本: 请问这个递归程序哪里出现了错误?提示:参数类型错误