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?