博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【SICP练习】24 练习1.30
阅读量:7078 次
发布时间:2019-06-28

本文共 572 字,大约阅读时间需要 1 分钟。



练习1.30

这道题要求将一个递归的规程改成是迭代的,通过对递归版本的sum的观察得出以下变换形式:

a—(next a)

other—(+ (term a) other)

博主英文不太好实在想不出什么好词语了。变换成迭代通俗点讲就是要将sum中最后一行的加号去掉,因为这个是消耗大量空间的根源。

如果我们将aother作为迭代中的产生,将这个过程展开即有:

(sum-iter a other)

(sum-iter (next a) (+ (term a) other))

(sum-iter (next (next a)) (+ (term (term a))(+ (term a) other)))

博主就不再一直写下去了,就是按照前面的变换规则做对应变换罢了。

于是我们便可以完成题中的空缺部分了。

(define (sum term a next b)

   (define (sum-iter a other)

       (if (> a b)

         other

          (sum-iter (next a) (+ (term a) other))))

   (sum-iter a 0))

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

转载于:https://www.cnblogs.com/NoMasp/p/4786206.html

你可能感兴趣的文章
神奇高效的Linux命令行
查看>>
阿里云老后台
查看>>
mikadonic-文件访问控制设置(深层次的权限控制setfacl)
查看>>
这是标题,用来测试博客皮肤标题
查看>>
AJax详解
查看>>
从一段时间段中获取所有日期
查看>>
Java中如何设置表格处于不可编辑状态
查看>>
Java JTable视图窗口滚动并定位到某一行
查看>>
课堂练习
查看>>
HTML学习成果 制作一个空白简历
查看>>
使用mybatis自带工具,自动生成表对应domain、mapper.xml以及dao
查看>>
餐饮ERP相关问题FAQ
查看>>
基于 Vue.js 的移动端组件库mint-ui实现无限滚动加载更多
查看>>
Matrix Computations 1
查看>>
springboot上传代码到gitlab并发布上线操作
查看>>
FILE * fopen(const char * path,const char * mode);
查看>>
[Flask]sqlalchemy使用count()函数遇到的问题
查看>>
[python](Docker SDK)上传镜像到私有仓库(tls、身份认证)
查看>>
听说是阿里笔试题
查看>>
使用pm2管理nodejs应用
查看>>