我可以使用以下代码获取列表的奇数元素:
(define (odds lis)
(cond
((null? lis) '())
((not (list? lis)) (quote (Usage: odds(list))))
((null? (car lis)) '())
((= (length lis) 1) (car lis))
(else (cons (car lis) (odds (cddr lis))))))
但是当输入奇数长度的列表时例如:(赔率'(a b c d e))它会返回(中、中)
我怎样才能摆脱这个令人讨厌的时期?
试试这个,它只是一行的变化:
(define (odds lis)
(cond
((null? lis) '())
((not (list? lis)) (quote (Usage: odds(list))))
((null? (car lis)) '())
((= (length lis) 1) lis) ; change here
(else (cons (car lis) (odds (cddr lis))))))
在突出显示的行中,您返回的是单个元素而不是正确的列表(以 null 结尾的列表),这就是导致问题的原因。