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