我有以下代码甚至列表:
(define (even xs)
(cond
((null? xs) '())
((eq? (cdr xs) '()) '())
(else (cons (cadr xs) (even (cddr xs))))))
;(even-list '(a b c d)) produces (b d)
如何对产生(a c)if(奇数列表'(a b c d))的奇数列表进行相同的处理。
答案 0 :(得分:3)
我相信你会被要求完全自己写出来。为此,请注意(在您提供的代码中)您正在检查cdr
是否为空列表,因为您将cadr
作为第一个元素。
对于赔率,您不需要cadr
。第一个元素已处于奇数位置。
但是你也可以使用一个简单的技巧。
问题:(cons 1 xs)
对xs
的长度有什么影响?