Code Review
Compare your solutions
; Нормальный порядок вычислений:
; (gcd 40 (remainder 206 40))
; (gcd 40 6)
; (gcd 6 (remainder 40 6))
; (gcd 6 4)
; (gcd 4 (remainder 6 4))
; (gcd 4 2)
; (gcd 2 (remainder 4 2))
; (gcd 2 0)
; 2
; Аппликативный порядок вычислений:
; (gcd 40 (remainder 206 40))
; (gcd 40 6)
; (gcd 6 (remainder 40 6))
; (gcd 6 4)
; (gcd 4 (remainder 6 4))
; (gcd 4 2)
; (gcd 2 (remainder 4 2))
; (gcd 2 0)
; 2
В обоих случаях выполняется 4 операции remainder
(gcd 206 40)
;
; Аппликативный порядок вычислений:
; (gcd 40 (remainder 206 40)) ; > 0
; (gcd 40 6) ; > 1
; (gcd 6 (remainder 40 6)) ; > 1
; (gcd 6 4) ; > 2
; (gcd 4 (remainder 6 4)) ; > 2
; (gcd 4 2) ; > 3
; (gcd 2 (remainder 4 2)) ; > 3
; (gcd 2 0) ; > 4
; 2
; Нормальный порядок вычислений:
; (gcd 40 (remainder 206 40)) ; = 0
; (if (= 40 0)
; 206
; (gcd 40 (remainder 206 40))) ; = 0
; (if (= (remainder 206 40) 0) ; = 0
; 40
; (gcd (remainder 206 40) (remainder 40 (remainder 206 40))))
; (if (= 6 0) ; = 1
; 40
; (gcd (remainder 206 40) (remainder 40 (remainder 206 40))))
;
; (gcd (remainder 206 40) (remainder 40 (remainder 206 40))))
;
; (if (= (remainder 40 (remainder 206 40)) 0) ; = 1
; (remainder 206 40)
; (gcd
; (remainder 40 (remainder 206 40))
; (remainder (remainder 206 40) (remainder 40 (remainder 206 40)))))
;
; (if (= (remainder 40 6) 0) ; = 2
; (remainder 206 40)
; (gcd
; (remainder 40 (remainder 206 40))
; (remainder (remainder 206 40) (remainder 40 (remainder 206 40)))))
;
; (if (= 4 0) ; = 3
; (remainder 206 40)
; (gcd
; (remainder 40 (remainder 206 40))
; (remainder (remainder 206 40) (remainder 40 (remainder 206 40)))))
;
; (gcd
; (remainder 40 (remainder 206 40))
; (remainder (remainder 206 40) (remainder 40 (remainder 206 40)))))
;
; (if (= (remainder (remainder 206 40) (remainder 40 (remainder 206 40))) 0)
; (remainder 40 (remainder 206 40))
; (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)))))
;
; (if (= (remainder (remainder 206 40) (remainder 40 6)) 0) ; = 4
; (remainder 40 (remainder 206 40))
; (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)))))
;
; (if (= (remainder (remainder 206 40) 4) 0) ; = 5
; (remainder 40 (remainder 206 40))
; (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)))))
;
; (if (= (remainder 6 4) 0) ; = 6
; (remainder 40 (remainder 206 40))
; (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)))))
;
; (if (= 2 0) ; = 7
; (remainder 40 (remainder 206 40))
; (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)))))
;
; (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)))))
;
; (if (= (remainder ; = 7
; (remainder 40 (remainder 206 40))
; (remainder (remainder 206 40) (remainder 40 (remainder 206 40)))) 0)
;
; (remainder (remainder 206 40) (remainder 40 (remainder 206 40))) ; СЛЕДСТВИЕ
;
; (remainder ; АЛЬТЕРНАТИВА
; (remainder 40 (remainder 206 40))
; (remainder (remainder 206 40) (remainder 40 (remainder 206 40)))))
;
; ... считаем if:
;
; (remainder ; = 7
; (remainder 40 (remainder 206 40))
; (remainder (remainder 206 40) (remainder 40 (remainder 206 40))))
;
; (remainder ; = 7 + 3
; (remainder 40 6)
; (remainder 6 (remainder 40 6)))
;
; (remainder ; = 7 + 3 + 2
; 4
; (remainder 6 4))
;
; (remainder ; = 7 + 3 + 2 + 1
; 4
; 2)
;
; (remainder 4 2) ; = 13
; 0 ; = 14
;
; получаем 0, наконец попадаем в ветку следствия X:
;
; (remainder (remainder 206 40) (remainder 40 (remainder 206 40))) ; = 13
; (remainder 6 (remainder 40 6)) ; = 14 + 2
; (remainder 6 4) ; = 14 + 2 + 1
; 2 ; = 14 + 2 + 1 + 1
; 2 ; 18
; Ответы:
; - при аппликативном порядке 4 вызова REMAINDER
; - при нормальном порядке 18 вызовов REMAINDER
; Нормальный порядок вычислений:
; (gcd 40 (remainder 206 40))
; (gcd 40 6)
; (gcd 6 (remainder 40 6))
; (gcd 6 4)
; (gcd 4 (remainder 6 4))
; (gcd 4 2)
; (gcd 2 (remainder 4 2))
; (gcd 2 0)
; 2
; Аппликативный порядок вычислений:
; (gcd 40 (remainder 206 40))
; (gcd 40 6)
; (gcd 6 (remainder 40 6))
; (gcd 6 4)
; (gcd 4 (remainder 6 4))
; (gcd 4 2)
; (gcd 2 (remainder 4 2))
; (gcd 2 0)
; 2
В обоих случаях выполняется 4 операции remainder
(gcd 206 40)
;
; Аппликативный порядок вычислений:
; (gcd 40 (remainder 206 40)) ; > 0
; (gcd 40 6) ; > 1
; (gcd 6 (remainder 40 6)) ; > 1
; (gcd 6 4) ; > 2
; (gcd 4 (remainder 6 4)) ; > 2
; (gcd 4 2) ; > 3
; (gcd 2 (remainder 4 2)) ; > 3
; (gcd 2 0) ; > 4
; 2
; Нормальный порядок вычислений:
; (gcd 40 (remainder 206 40)) ; = 0
; (if (= 40 0)
; 206
; (gcd 40 (remainder 206 40))) ; = 0
; (if (= (remainder 206 40) 0) ; = 0
; 40
; (gcd (remainder 206 40) (remainder 40 (remainder 206 40))))
; (if (= 6 0) ; = 1
; 40
; (gcd (remainder 206 40) (remainder 40 (remainder 206 40))))
;
; (gcd (remainder 206 40) (remainder 40 (remainder 206 40))))
;
; (if (= (remainder 40 (remainder 206 40)) 0) ; = 1
; (remainder 206 40)
; (gcd
; (remainder 40 (remainder 206 40))
; (remainder (remainder 206 40) (remainder 40 (remainder 206 40)))))
;
; (if (= (remainder 40 6) 0) ; = 2
; (remainder 206 40)
; (gcd
; (remainder 40 (remainder 206 40))
; (remainder (remainder 206 40) (remainder 40 (remainder 206 40)))))
;
; (if (= 4 0) ; = 3
; (remainder 206 40)
; (gcd
; (remainder 40 (remainder 206 40))
; (remainder (remainder 206 40) (remainder 40 (remainder 206 40)))))
;
; (gcd
; (remainder 40 (remainder 206 40))
; (remainder (remainder 206 40) (remainder 40 (remainder 206 40)))))
;
; (if (= (remainder (remainder 206 40) (remainder 40 (remainder 206 40))) 0)
; (remainder 40 (remainder 206 40))
; (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)))))
;
; (if (= (remainder (remainder 206 40) (remainder 40 6)) 0) ; = 4
; (remainder 40 (remainder 206 40))
; (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)))))
;
; (if (= (remainder (remainder 206 40) 4) 0) ; = 5
; (remainder 40 (remainder 206 40))
; (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)))))
;
; (if (= (remainder 6 4) 0) ; = 6
; (remainder 40 (remainder 206 40))
; (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)))))
;
; (if (= 2 0) ; = 7
; (remainder 40 (remainder 206 40))
; (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)))))
;
; (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)))))
;
; (if (= (remainder ; = 7
; (remainder 40 (remainder 206 40))
; (remainder (remainder 206 40) (remainder 40 (remainder 206 40)))) 0)
;
; (remainder (remainder 206 40) (remainder 40 (remainder 206 40))) ; СЛЕДСТВИЕ
;
; (remainder ; АЛЬТЕРНАТИВА
; (remainder 40 (remainder 206 40))
; (remainder (remainder 206 40) (remainder 40 (remainder 206 40)))))
;
; ... считаем if:
;
; (remainder ; = 7
; (remainder 40 (remainder 206 40))
; (remainder (remainder 206 40) (remainder 40 (remainder 206 40))))
;
; (remainder ; = 7 + 3
; (remainder 40 6)
; (remainder 6 (remainder 40 6)))
;
; (remainder ; = 7 + 3 + 2
; 4
; (remainder 6 4))
;
; (remainder ; = 7 + 3 + 2 + 1
; 4
; 2)
;
; (remainder 4 2) ; = 13
; 0 ; = 14
;
; получаем 0, наконец попадаем в ветку следствия X:
;
; (remainder (remainder 206 40) (remainder 40 (remainder 206 40))) ; = 13
; (remainder 6 (remainder 40 6)) ; = 14 + 2
; (remainder 6 4) ; = 14 + 2 + 1
; 2 ; = 14 + 2 + 1 + 1
; 2 ; 18
; Ответы:
; - при аппликативном порядке 4 вызова REMAINDER
; - при нормальном порядке 18 вызовов REMAINDER