【SICP练习】63 练习2.34-阿里云开发者社区

开发者社区> nomasp> 正文

【SICP练习】63 练习2.34

简介:
+关注继续查看


练习2.34

书中一开始有2个式子,一个是原式,一个根据Horner规则构造出的式子。而我们同样也可以将待求得式子写成这种方式,而且可以更进一步——那就是写成Lisp的前序表示:

(+ 1 (* x (+ 3 (* x (+ 0 (* x (+ 5 (* x(+ 0 x) ) ) ) ) ) ) ) )

由此可以观察得出lambda表达式里要做的是:

(+ this-coeff (* x (accumulate ......

通过不断的递归,最终就像上一题中图片所示的一样,accumulate最终会返回一个值,然后就开始计算不再递归了,空间需求也就开始缩小。

(define (horner-eval xcoefficient-sequence)

   (accumulate (lambda (this-coeff higher-terms)

                    (+ this-coeff (* xhigher-terms)))

                0

                coefficient-sequence))

下面我们来测试一下。

(load “d:\\lisp\\accumulate-2.scm”)

(load “d:\\lisp\\horner-eval.scm”)

(horner-eval 2 ‘(1 3 0 5 0 1))

;Value: 79

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
+关注
542
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载