编写一个返回偶数列表的方案

时间:2017-03-17 21:00:09

标签: list scheme lisp

编写一个Scheme函数,返回给定整数列表中的偶数列表。列表可能不简单,可能会出现嵌套列表,您需要在其中找到偶数。

(DEFINE(evenlist numberlist) 使用它作为一个身体,并得到这样的结果 (DEFINE(evenlist numberlist) 结果:(2 4 6 4)

(define (evenlist numberlist)
  (cond
    ((null? numberlist) '())
    (else(not (= 0 (modulo (numberlist) 2))(evenlist(car numberlist))))
    ))

这就是我所做的,我是lisp的新手,所以不要怪我:(

1 个答案:

答案 0 :(得分:1)

如果输入列表是任意嵌套的列表列表,则必须完成更多工作。这是处理此类列表的标准模板(例如:空列表,非列表或列表列表),以及用于展平结果的其他逻辑(这就是此处使用append的原因):

(define (evenlist numberlist)
  (cond ((null? numberlist) '())
        ((not (pair? numberlist))
         (if (even? numberlist) (list numberlist) '()))
        (else
         (append (evenlist (car numberlist))
                 (evenlist (cdr numberlist))))))