练习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版权声明:本文为 NoMasp柯于旺 原创文章,未经许可严禁转载!欢迎访问我的博客:http://blog.youkuaiyun.com/nomasp
本文介绍了一种快速计算乘法的方法,通过使用double和halve函数,仅需对数步即可完成计算。示例代码展示了如何利用递归和条件判断实现这一高效算法。
190

被折叠的 条评论
为什么被折叠?



