sicp practice 1.16

今天忍着蚊子的叮咬,把SICP习题1.16作了。
先写了递归版:
(define power
  (lambda (m n)
    (cond
      ((zero? n) 1)
      ((even? n) (square (power m (/ n 2))))
      (else (* m (power m (- n 1)))))))

又写了迭代版:
(define power-iter
  (lambda (m n product)
    (cond
      ((zero? n) product)
      ((odd? n) (power-iter m (- n 1) (* m product)))
      (else (power-iter (square m) (/ n 2) product)))))


自己定义的函数:
(define square
  (lambda (m)
    (* m m)))


在DrRacket下运行通过。

你可能感兴趣的:(SICP)