线性递归:

function factorial(n){
    return n==1 ? 1 : n*factorial(n-1);
}

线性迭代:

function factorial(n){
    return fact_iter(1,1,n);
}
function fact_iter(product, counter, max_count){
    return counter > max_count ? product :
            fact_iter((counter * product), (counter + 1), max_count);
}

线性递归的计算过程形状,是先扩张后收缩状。解释器还要保存,线性递归的计算步骤。

线性迭代保存计算结果,无需解释期保存计算步骤。

所以,速度上,线性迭代占优势。但,理解上,线性递归,占优势。

树形递归:

function fib(n){
    return n== 0 ? 0 : n==1 ? 1 : 
    fib(n- 1)+fib(n- 2);
}

算法的时间与空间,估算。

转载于:https://www.cnblogs.com/samwu/archive/2012/04/22/2464968.html

计算机程序的构造和解释1构造过程抽象1.2过程与它们所产生的计算相关推荐

  1. 过程作为黑箱抽象——《计算机程序的构造和解释》

    可以看到,对于平方根的计算问题可以自然地分解为若干子问题:怎样说一个猜测是足够好了,怎样去改进一个猜测,等等.这些工作中的每一个都通过一个独立的过程完成,整个sprt程序可以看做一族过程(如图1-2所 ...

  2. 关于《计算机程序的构造和解释》

    关于<计算机程序的构造和解释> 来源 http://www.nowamagic.net/librarys/veda/detail/1905 先谈谈关于<计算机程序的构造和解释> ...

  3. 计算机程序结构和解释,SICP 计算机程序的构造和解释

    <SICP 计算机程序的构造和解释>由会员分享,可在线阅读,更多相关<SICP 计算机程序的构造和解释(5页珍藏版)>请在人人文库网上搜索. 1.SICP 计算机程序的构造和解 ...

  4. 老赵书托(2):计算机程序的构造与解释

    我要推荐的第一本书便是大名鼎鼎的<Structure and Interpretation of Computer Programs>,在国内可以买到中译版,即机械工业出版社的<计算 ...

  5. 计算机程序的构造和解释(第二版)笔记

    计算机程序的构造和解释(第二版) 跳转至: 导航. 搜索 define cond if (else) special form,不能实现为对cond的封装(why?) and or not sqrt ...

  6. csapp 、sicp 、深入理解计算机系统、 计算机程序的构造和解释

    CSAPP 第一版的英文版 深入理解计算机系统第一版中文版  这个是csdn账号  这里上传文件大小在10M以内  这个pdf是19+M的 深入理解计算机系统第二版的中文版下载 第一版英文版的介绍原书 ...

  7. 《计算机程序的构造和解释》阅读笔记:准备(3)【python3简单实现lisp解释器(3)】

    下面是我在原基础上添加了一些功能的解释器代码(超详细的注释) ################ python3 实现 lisp 解释器 ''' 语言的语法是指组成正确的语句或表达式的顺序,语义指那些表 ...

  8. python装饰器带参数函数二阶导数公式_【计算机程序的构造和解释】使用函数构建抽象——5. 高阶函数...

    学Python,用RPA 艺赛旗RPA2020.1版本 正在免费下载使用中,欢迎下载使用艺赛旗-RPA机器人免费下载|提供流程自动化解决方案​www.i-search.com.cn 我们已经看到,函数 ...

  9. SICP学习笔记及题解---构造过程抽象(一)

    有段时间没看这本书了. 而且在做笔记的时候产生了一些疑问,觉得这样照着书做笔记没什么意义.于是乎,改变了一下做法.改成先提出疑问,记下重点,然后结合实际案例学习相关东西,最后附上题解, ok,下面就是 ...

最新文章

  1. 【PAT (Advanced Level) Practice】1050 String Subtraction (20 分)
  2. BF算法和KMP算法实现
  3. 为什么Spring Boot项目引入依赖的时候可以不指定依赖的版本号
  4. C#委托Action、ActionT、FuncT、PredicateT
  5. 如何让两个安装程序setup共享同一个component—— installing shared files(version:installshield develop8.0)...
  6. 获取浏览器可视区域、屏幕的宽和高
  7. 浅谈 Linux API的交互式运行环境ipython是最好的REPL
  8. GitHub的SSH免密连接
  9. 网络集成方案_用户需要的综合性解决方案:网络安全架构集成的价值凸显
  10. 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】Linux内核抢占实现机制分析...
  11. java一卡通实例代码_java写的简单校园卡管理系统 校园一卡通 - 下载 - 搜珍网
  12. Android MeasureSpec的理解和源码的解析
  13. python 标准库: csv
  14. category 详解
  15. glove.840B.300d、glove.42B.300d、glove.6B下载
  16. 漏洞通告 | Atlassian Confluence存在远程代码执行漏洞,悬镜云鲨RASP天然免疫防护...
  17. 精通 CSS+DIV 网页样式与布局 62
  18. Connection pool shut down http请求异常关闭
  19. python篮球弹跳训练方法_业余篮球爱好者的弹跳训练全攻略(附6个月训练计划)...
  20. 玩转VIM编辑器-导航移动

热门文章

  1. C++提高部分_C++类模板对象做函数参数---C++语言工作笔记090
  2. ES8新特性_async和await结合使用读取文件内容---JavaScript_ECMAScript_ES6-ES11新特性工作笔记050
  3. 微服务升级_SpringCloud Alibaba工作笔记0009---阿里云部署微服务_在内网不同机器上_报错_注册中心找不到对应的机器_遇到java.net.UnknownHostExceptio
  4. windows上配置新的conda env+torch
  5. override(C# 参考)
  6. centos 7 菜鸟第一天 找回win10
  7. 百度实习笔试题(2012.5.6)
  8. 无人驾驶(如何自己构建hdmap)
  9. curve函数 roc_sklearn-roc_curve
  10. python有什么优秀功能_Python都有什么强大的功能