; Both of these are recursive procedures. One of them uses a recursive process,
; the other one uses an iterative process. Both v1 and v2 compute a * 2^n.
;
; Discuss with your partner which function uses which process. Also, what
; is the order of growth in terms of time of version 1? What is the order of
; growth in terms of time for version 2? Are the orders of growth the same
; in terms of memory used? Justify your answers.

(define (v1 a n)
  (cond ((= n 0) a)
        (else (v1 (* 2 a) (- n 1)))))

(define (v2 a n)
  (cond ((= n 0) a)
        (else (* 2 (v2 a (- n 1))))))