【SICP练习】11 练习1.17
2015-02-05 19:14
197 查看
练习1.17
这道题中有2个需要我们自己先写出来的函数double和halve,当然了,这都非常容易实现:
(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
练习1.17
这道题中有2个需要我们自己先写出来的函数double和halve,当然了,这都非常容易实现:
(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 练习1.17
- 黑马程序员-DOM编程基础知识练习程序(11-17)
- SICP 练习1.9
- SICP 1.17
- 练习11——输入(python2.x与3.x input的区别)
- 11.方法的练习
- 【SICP练习】20 练习1.26
- 【SICP练习】39 练习1.44
- 【SICP练习】54 练习2.22
- 【SICP练习】70 练习2.41
- 【SICP练习】55 练习2.23
- 【SICP练习】22 练习1.28
- 【SICP练习】75 练习2.46
- 【SICP练习】91 练习2.64
- C# 语法练习(11): 类[三] - 构造函数、析构函数、base、this
- 【SICP练习】152 练习4.8
- 【SICP练习】33 练习1.39
- 【SICP练习】87 练习2.59
- 【SICP练习】23 练习1.29