码迷,mamicode.com
首页 > 其他好文 > 详细

【SICP练习】11 练习1.17

时间:2015-02-05 20:32:57      阅读:96      评论:0      收藏:0      [点我收藏+]

标签:sicp   loop   map   edwin   let   



练习1.17

这道题中有2个需要我们自己先写出来的函数doublehalve,当然了,这都非常容易实现:

(define(double x)

       (+ x x))

(define(halve x)

       (/ x 2))

题目中要求我们设计一个类似于fast-expt的求乘积的过程,并且只用对数的步数。

(define(* x y)

       (cond ((= y 0) 0)

       ((even? y) (double (* x (halve y))))

       ((odd? y) (+ x (* x (- y 1))))))

我们继续来测试一下:

(*2 10)

;Value:20

(*3 60)

;Value: 180

【SICP练习】11 练习1.17

标签:sicp   loop   map   edwin   let   

原文地址:http://blog.csdn.net/nomasp/article/details/43532713

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!