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