(define reverse (lambda (lst) (if (null? lst) '() (add-to-end (reverse (cdr lst)) (car lst))))) |
(define add-to-end (lambda (lst elt) (if (null? lst) (cons elt '()) (cons (car lst) (add-to-end (cdr lst) elt))))) |
Q: If lst has n elements, how many conses
does (reverse lst) do?
(Call this quantity R(n))
A: R(n) | = | conses done by (reverse (cdr lst)) | + | conses done by (add-to-end ... ) |
= | R(n-1) | + | n |