Functional programming 如何将球拍/方案中的偶数列表更改为奇数列表?
对于偶数列表,我有以下代码:Functional programming 如何将球拍/方案中的偶数列表更改为奇数列表?,functional-programming,scheme,racket,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 b c d))被插入,我如何对产生(a c)的奇数列表执行相同的操作。我确信您被
(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 b c d))被插入,我如何对产生(a c)的奇数列表执行相同的操作。我确信您被要求自己完整地写出来。为此,请注意(在您提供的代码中)您正在检查
cdr
是否为空列表,因为您将cadr
作为第一个元素
对于赔率,您不需要cadr
。第一个元素已经位于奇数位置
但你也可以使用一个简单的技巧
问题:
(cons 1 xs)
对xs
的长度有什么影响?您已经知道null?
–用(null?(cdr xs))
替换(eq?(cdr xs)())
。