Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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 '()) ))