zoukankan      html  css  js  c++  java
  • 【SICP练习】86 练习2.58

    练习2.58

    如果要由前序变成中序那就要有些大变动了。

    (define (make-sum a1 a2)
        (cond ((=number? a1 0) a2)
          ((=number? a2 0) a1)
             ((and (number? a1) (number? a2))
                 (+ a1 a2))
              (else 
            (list a1 ‘+ a2))))
    (define (sum? x)
        (and (pair? x) (eq? (cadr x) ‘+)))
    (define (addend s)
        (car s))

    其余的都不变。将乘法的计算用中序表达:

    (define (make-product m1 m2)
        (cond ((or (=number? m1 0) (=number? m2 0))
                0)
              ((=number? m1 1) m2)
              ((=number? m2 1) m1)
              ((and (number? m1) (number? m2))
               (* m1 m2))
              (else 
                (list m1 ‘* m2))))

    对应的product?和multiplier也要做修改。

    (define (product? x)
        (and (pair? x) (eq? (cadr x) ‘*)))
    (define (multiplier p)
        (car p))

    而deriv则与书上的代码一样不必修改。至于第二小题,貌似无解。如果有知道的,望告知。



    感谢访问,希望对您有所帮助。 欢迎关注或收藏、评论或点赞。


    为使本文得到斧正和提问,转载请注明出处:
    http://blog.csdn.net/nomasp


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

  • 相关阅读:
    页面跳转
    vue项目流程
    前端框架发展史
    webpack构建react项目和发布流程
    React工作原理
    React项目中的registerServiceWorker作用?
    学习react总结
    浏览器的渲染:过程与原理
    浮动相关
    块级元素与内嵌元素
  • 原文地址:https://www.cnblogs.com/NoMasp/p/4786133.html
Copyright © 2011-2022 走看看