我需要编写一个递归函数来打印列表中的元素两次。例如,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