Using the property that GCD(a, b) = GCD(b, r) where r is the remainder when you compute (a / b), you can write a recursive function as follows:
(define (gcd a b) ; recursive (if (= 0 b) a (gcd b (remainder a b))))
I also tried to write the following as an iterative function, but it still looks very similar to the recursive solution to my eye. Is this a correct, iterative solution?
(define (i-gcd a b) ; is this iterative? (i-gcd-iter (remainder a b) b)) (define (i-gcd-iter acc b) (if (= 0 b) acc (gcd b (remainder acc b))))
EDIT: It appears that the first solution was actually iterative, and in fact very similar to the solution written in SICP (http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-11.html). What would a recursive solution to this problem look like?