Код Ревью

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

    #| BEGIN (Введите свое решение) |#
(define (even? n)
    (= (remainder n 2) 0))

(define (square n)
    (* n n))

(define (fast-expt-rec b n)
    (cond ((= n 0) 1)
          ((even? n) (square (fast-expt-rec b (/ n 2))))
            (else (* b (fast-expt-rec b (- n 1))))))

(define (fast-expt-iter b n invariant)
    (cond ((= n 0) invariant)
          ((even? n) (fast-expt-iter (square b) (/ n 2) invariant))
          ((fast-expt-iter b (- n 1) (* b invariant)))))

(define (solution b n)
    (fast-expt-iter b n 1))


#| END |#
    #| BEGIN (Введите свое решение) |#




(define (solution b n)
  (define (even? n)
    (= (remainder n 2) 0))

  (define (square n)
      (* n n))
  
  (define (fast-expt-rec b n)
      (cond ((= n 0) 1)
            ((even? n) (square (fast-expt-rec b (/ n 2))))
              (else (* b (fast-expt-rec b (- n 1))))))
  
  (define (fast-expt-iter b n invariant)
    (cond ((= n 0) invariant)
          ((even? n) (fast-expt-iter (square b) (/ n 2) invariant))
          ((fast-expt-iter b (- n 1) (* b invariant)))))
  
    (fast-expt-iter b n 1))
#| END |#
    #| BEGIN (Введите свое решение) |#
(define (even? n)
    (= (remainder n 2) 0))

(define (square n)
    (* n n))

(define (fast-expt-rec b n)
    (cond ((= n 0) 1)
          ((even? n) (square (fast-expt-rec b (/ n 2))))
            (else (* b (fast-expt-rec b (- n 1))))))

(define (fast-expt-iter b n invariant)
    (cond ((= n 0) invariant)
          ((even? n) (fast-expt-iter (square b) (/ n 2) invariant))
          ((fast-expt-iter b (- n 1) (* b invariant)))))

(define (solution b n)
    (fast-expt-iter b n 1))


#| END |#
    #| BEGIN (Введите свое решение) |#




(define (solution b n)
  (define (even? n)
    (= (remainder n 2) 0))

  (define (square n)
      (* n n))
  
  (define (fast-expt-rec b n)
      (cond ((= n 0) 1)
            ((even? n) (square (fast-expt-rec b (/ n 2))))
              (else (* b (fast-expt-rec b (- n 1))))))
  
  (define (fast-expt-iter b n invariant)
    (cond ((= n 0) invariant)
          ((even? n) (fast-expt-iter (square b) (/ n 2) invariant))
          ((fast-expt-iter b (- n 1) (* b invariant)))))
  
    (fast-expt-iter b n 1))
#| END |#