我需要編寫一個遞歸函數來打印列表中的元素兩次。例如,rdouble'(1 2 3)將打印(1 1 2 2 3 3),並打印rdouble'(1(2 3)4)(1 1(2 2 3 3)4 4)。我如何遞歸地打印列表中的元素兩次?
到目前爲止,我有:
(defun rdouble(struct)
(cond
((atom struct) struct)
(t (cons (rdouble (car struct)) (cons (car struct)
(rdouble (cdr struct))
)))))
也能正常工作的第一個例子,但是版畫
(1 1 (2 2 3 3) (2 3) 4 4)
對第二個例子。如何繼續打印每個元素兩次但不重印(2 3)?我做錯了什麼,我該如何解決它?
當你說,「打印」,你的意思是「迴歸」?如果這是作業,你應該添加「家庭作業」標籤。 – 2010-11-09 23:22:32
是的,我的意思是返回...對不起,關於標籤,它是我第一次在論壇上... – 2010-11-09 23:37:55
沒問題。歡迎來到堆棧溢出! – 2010-11-09 23:40:35