编写一个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的新手,所以不要怪我:(
答案 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))))))