我想写一个递归函数,它接受一个列表,然后用第一个元素划分该列表。当我打电话与LISP - 用列表中的第一个元素划分列表
(divfirst '(3 6 9 12))
函数应该返回
(1 2 3 4)
到目前为止,我得到这个
(defun divfirst (list)
(COND ((= (FIRST list) 0) (PRINT 'div_durch_null)) ; Catch division by 0
(list (/ (FIRST(REST list)) (FIRST list)) (divfirst (cons (FIRST L) (REST L)))) ; Division and recursion
)
)
然而,因为它是现在它崩溃时,我尝试了Lisp的调试器去调用它,它也没有按照它自己划分第一个元素的意思去做。如果有人得到一个提示,我应该如何构建分区和递归,我会很乐意接受它。
'(mapcar(拉姆达(elem)(/ elem(first list)))(rest list))'。除以零分可以作为条件被捕获,或者在此附近进行测试。 – Kaz
@Kaz,我想递归地做,而不是使用mapcar。 – Streamline
当然可以! '(defun recursive-mapcar(fun list)(if list(cons(funcall fun(car list))(recursive-mapcar fun(cdr list)))))'。但是,我不会在生产代码中这样做;我会使用内置的'mapcar'。 – Kaz