我想寫一個遞歸函數,它接受一個列表,然後用第一個元素劃分該列表。當我打電話與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