我需要在lisp中编写一个递归方法,将奇数值加倍并单独保留偶数值。
到目前为止,我有:
(defun MY-DOUBLE-ODD (n)
(if (oddp n)
(setq n (* n 2)))
n)
但是,我只是无法弄清楚如何让这个递归方法遍历整个列表。
如何修复它以使其迭代(MY-DOUBLE-ODD (1 2 3 4 5 6))
??
答案 0 :(得分:0)
您的解决方案根本不应涉及setq
。递归应该用于迭代参数列表,使用car
获取第一个元素,cdr
以获取列表的其余部分以进行递归,并使用cons
来构造结果从递归调用返回。