Код Ревью

Сравни свои решения

    #| Для этого упражнения нет проверок.
Любое решение будет считаться успешным ответом. |#
(define (gcd a b)
  (if (= b 0)
      a
      (gcd b (remainder a b))))


; Нормальный порядок вычислений
(gcd 206 40)
(gcd 40 (remainder 206 40))
(gcd (remainder 206 40) (remainder 40 (remainder 206 40))) ; в (= b 0) 1 раз вычисляется remainder
(gcd (remainder 40 (remainder 206 40)) (remainder (remainder 206 40) (remainder 40 (remainder 206 40)))) ; в (= b 0) 2 раза вычисляется remainder
(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))))) ; в (= b 0) 4 раза вычисляется remainder

; Итого 11 + 7 = 18 вызовов remainder

; Аппликативный порядок вычислений
(gcd 206 40)
(gcd 40 6) ; 1 вызов remainder
(gcd 6 4) ; 2 вызов remainder
(gcd 4 2) ; 3 вызов remainder
(gcd 2 0) ; 4 вызов remainder
; Итого 4 вызова remainder