3Aug/090
Exercise 2.18 of SICP
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)
(define (reverse-rec ls) (if (null? ls) '() (append (reverse-rec (cdr ls)) (list (car ls)))))
(define (reverse ls) (define (reverse-iter ol nl) (if (null? ol) nl (reverse-iter (cdr ol) (cons (car ol) nl)))) (reverse-iter ls '()))
> (reverse-rec (list 1 2 3 4))
(4 3 2 1)
> (reverse (list 1 2 3 4))
(4 3 2 1)