今天忍着蚊子的叮咬,把SICP习题1.16作了。
先写了递归版:
又写了迭代版:
自己定义的函数:
在DrRacket下运行通过。
先写了递归版:
(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下运行通过。