2.1.1实例:有理数的算术运算
这个实例最展现了一种复合的方法(cons),让我们能够操作抽象的元素。最主要的是掌握其思想:愿望性思维。作为开始,我们假设已经有了一种构造有理数的方法(构造函数)和取得各个元素的方法(选择函数)。在这个基础上构造了有理数的加减乘除。在完成了这一部分之后,我们再转头去实现有理数的底层实现。这样很自然地,我们就把有理数的实现与其支持的方法隔离的开来,构造了一层抽象屏障。#lang sicp #;(再实
ワクワク
这个实例最展现了一种复合的方法(cons),让我们能够操作抽象的元素。最主要的是掌握其思想:愿望性思维。作为开始,我们假设已经有了一种构造有理数的方法(构造函数)和取得各个元素的方法(选择函数)。在这个基础上构造了有理数的加减乘除。在完成了这一部分之后,我们再转头去实现有理数的底层实现。这样很自然地,我们就把有理数的实现与其支持的方法隔离的开来,构造了一层抽象屏障。#lang sicp #;(再实
素数检测算法一(具有平方根号阶时间复杂度):用从二开始的连续整数来检查是否能整除要测试的素数。同时基于以下的事实我们还能够减小时间复杂度:如果n不是素数,那么必然有一个大于1小于$\sqrt{n}$的因子。这样,我们将就能够把时间复杂度从线性阶减小到根号阶。(define (square x);;用来取平方的过程 (* x x)) (define (smallest-divisor n);;检
牛顿法:如果对x的平方根的值有了一个猜测y,我们可以通过求y与x/y的平均值得到一个更接近真实值的猜测值。通过这个方法可以逐步逼近真实值(define bias 0.0001);;初始设置的允许误差 (define startup-item 1.0);;启动项,作为第一个猜测值(初始值) (define (sqrt-iter guess x);;一个用来迭代产生更好的猜测值的过程 (if (g
第一节:构造过程抽象0、计算机科学的本质,在于对解决问题的方法的一套规范性的形式化的描述。1、语言的基本元素基本表达形式:表达最简单的个体。组合的方法:把简单的东西构造成复杂的元素。抽象的方法:为复合对象命名,并把它当做单元进行操作。2、表达式求值:先求值表达式中的各个子表达式,再把最左边的运算符的过程作用于相应的实际参数。在这个过程中应用的是代换模型(这一点会被后来第三章提出的环境模型否定,不是
第二章 构造数据抽象序言简单数据并不能解决所有问题。有时候为了模拟复杂的现象,就需要去构造一些计算对象,集中的部分会反映真实世界中的一些若干角度的现象。本章讨论将数据对象组合起来,形成复合数据的方式。与需要复合过程的原因一样,使用复合数据能够提升我们设计程序时所位于的层次,提高设计的模块性,增强语言的表达方式。如何提高程序的模块性与层次性?总的来说,就是把处理数据对象的表示部分(具体实现)与处理数