在lisp中检查数字是偶数还是奇数

时间:2017-10-02 19:42:18

标签: common-lisp clisp

我需要在lisp中编写一个递归方法,将奇数值加倍并单独保留偶数值。

到目前为止,我有:

(defun MY-DOUBLE-ODD (n)
   (if (oddp n)
     (setq n (* n 2)))
   n)

但是,我只是无法弄清楚如何让这个递归方法遍历整个列表。

如何修复它以使其迭代(MY-DOUBLE-ODD (1 2 3 4 5 6)) ??

1 个答案:

答案 0 :(得分:0)

您的解决方案根本不应涉及setq。递归应该用于迭代参数列表,使用car获取第一个元素,cdr以获取列表的其余部分以进行递归,并使用cons来构造结果从递归调用返回。