【发布时间】:2012-11-14 05:35:57
【问题描述】:
我正在尝试创建一个返回列表中偶数元素的函数。
例如:
(evens '(a b c d))
应该返回
(b d)
下面的代码似乎适用于包含奇数个元素的列表,但如果我给它一个包含偶数个元素的列表,那就不正确了。
例如:
(evens '(a b c d e))
将返回
(b d)
但是:
(evens '(a b c d))
会回来
(a c)
有什么想法吗?
将我的代码更改为:
(DEFINE (evens lis)
(cond
((null? lis) '())
(else (cons (cadr lis) (evens (cdr lis))))
))
得到一个错误,指出传递给安全车的对象不是一对?
【问题讨论】:
-
单步执行代码,错误应该很明显。 (这是第一次迭代。)
-
您应该添加新代码,而不是替换旧代码。现在这个问题不完整,其中一部分不再相关。
-
一个相关的,志趣相投的answer - in F#。强烈推荐!!在 Scheme 中,您需要
cddr函数。