EVENREV: (evenrev lst) should return a new list, formed from the even-numbered e
ID: 3545503 • Letter: E
Question
EVENREV:
(evenrev lst) should return a new list, formed from the even-numbered elements
taken from lst, but in the reverse of their original order. That is,
(evenrev '(a b c d e f g))
should return:
(f d b)
(evenrev (LIST 's 't 'u 'v 'w 'x 'y 'z))
should return:
(z x v t)
I have a function that returns even written but don't know how to make it reverse
(DEFINE (evenrev lst)
(cond (
(null? lst)
'())
(
(null? (cdr lst))
'())
(else
(cons (cadr lst)
(evenrev (cddr lst))))))
Explanation / Answer
(define (evenrev lst)
(cond ((list? lst)
(cond
( (null? lst) '())
( (null? (cdr lst)) '())
(else (append (evenrev (cddr lst)) (list (cadr lst)) ))))
(else '()) ))
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.