Blob


1 (define (gcd a b)
2 (if (= b 0)
3 a
4 (gcd b (remainder a b))))
6 (gcd 206 40)
7 (gcd 40 (remainder 206 40))
8 evaluate remainder once
9 (gcd (remainder 206 40) (remainder 40 (remainder 206 40)))
10 evaluate remainder three times
11 (gcd (remainder 40 (remainder 206 40)) (remainder (remainder 206 40) (remainder 40 (remainder 206 40))))
12 evaluate remainder 7 times
13 (gcd (remainder (remainder 206 40) (remainder 40 (remainder 206 40))) (remainder (remainder 40 (remainder 206 40)) (remainder (remainder 206 40) (remainder 40 (remainder 206 40)))))
14 evaluate remainder 14 times
15 (remainder (remainder 206 40) (remainder 40 (remainder 206 40)))
16 (remainder 6 (remainder 40 (remainder 206 40)))
17 (remainder 6 (remainder 40 (remainder 206 40))) ;; 15 times
18 (remainder 6 (remainder 40 6)) ;; 16 times
19 (remainder 6 4) ;; 17 times
20 2 ;; 18 times
22 18 remainder operations are performed in normal order, whereas only 4 are performed in normal-order