SICP exercise 2.18 asks the following:
Exercise 2.18. Define a procedure reverse that takes a list as argument and returns a list of the same elements in reverse order:
(reverse (list 1 4 9 16 25)) (25 16 9 4 1)
I wrote this iterative function:
(define (reverse n) (define (iter a b) (if (null? a) b (iter (cdr a) (cons (car a) b)))) (iter n null))
I could not think of a way to do this recursively. Is there a better way to write this function? Is it possible to do it recursively?