如何在球拍/方案中将偶数列表更改为奇数列表?

时间:2016-03-06 13:17:42

标签: functional-programming scheme racket

我有以下代码甚至列表:

(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))的奇数列表进行相同的处理。

1 个答案:

答案 0 :(得分:3)

我相信你会被要求完全自己写出来。为此,请注意(在您提供的代码中)您正在检查cdr是否为空列表,因为您将cadr作为第一个元素。

对于赔率,您不需要cadr。第一个元素已处于奇数位置。

但是你也可以使用一个简单的技巧。

问题:(cons 1 xs)xs的长度有什么影响?