我觉得我很接近,但我似乎无法做到这一点。有什么想法吗?
离)
(removeOdd'(8 3(3 7)5))=> (8,())
(removeOdd'(5 5 2))=> (2)
(define (removeOdd y)
(if (null? y) '()
(if (= (remainder (car y) 2) 0)
(cons (car y) (removeOdd (cdr y)))
(cons removeOdd (cdr y)))
))
这可能不适用于列表在另一个列表中的情况,但我更关心的是能够返回我使用'cons'制作的列表
编辑 - 如果我将cons切换到列表,它也不会完全返回列表。
答案 0 :(得分:2)
(define (remove-odd y)
(cond
((null? y) '())
((pair? (car y))
(cons (remove-odd (car y)) (remove-odd (cdr y))))
((= (remainder (car y) 2) 0)
(cons (car y) (remove-odd (cdr y))))
(else (remove-odd (cdr y)))))
答案 1 :(得分:0)
(define (removeOdd y)
(if (null? y)
'()
(if (atom? (car y))
(if (= (remainder (car y) 2) 0)
(cons (car y) (removeOdd (cdr y)))
(removeOdd (cdr y))
)
(cons (removeOdd (car y)) (removeOdd (cdr y)))
))
我实际上不记得如何检查某些东西是否是原子,但这正是你所需要的。