zoukankan      html  css  js  c++  java
  • 【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

    版权声明:本文为 NoMasp柯于旺 原创文章,如需转载请联系本人。

  • 相关阅读:
    串 --- 匹配
    串 --- 匹配
    计算几何 --- 哈希优化
    哈希 --- 线性探测法
    拓扑排序 --- 反向建图
    swift学习
    CocoaPods安装教程 pod setup很慢解决方案
    Adobe Fireworks CS6 Mac破解版
    iStat for mac
    mac环境下清理系统垃圾clearMyMac 3.9 破解版
  • 原文地址:https://www.cnblogs.com/NoMasp/p/4786156.html
Copyright © 2011-2022 走看看