如何消除缺点的副作用



我可以使用以下代码获取列表的奇数元素:

(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 结尾的列表),这就是导致问题的原因。

相关内容

  • 没有找到相关文章

最新更新