摘要:
练习1.19题目中说道斐波那契数中将变换T的n次方应用于对偶(1,0)而产生出来,而现在将T看作T(pq)中p=0和q=1的特俗情况。因此对于对偶(a,b)来说,a—bq+a(p+q),b—bp+aq。而对于T(pq)的平方也就是(T(pq))^2,就像之前的a中往b乘以q和往a乘以(p+q),... 阅读全文
摘要:
练习1.8和前两题一样,依旧是只能用对数步数。而且这个迭代过程要基于加、加倍和折半运算。这一个习题要用到前面的函数,因此最好的做法是,每次都将写好的代码保存起来。(load“Test1.18.scm”)这行代码可以用来加载代码。而保存可以用C-X,C-W。以下是该题的代码,这次我们写成块结构:(... 阅读全文
摘要:
练习1.17这道题中有2个需要我们自己先写出来的函数double和halve,当然了,这都非常容易实现:(define(double x)(+ x x))(define(halve x)(/ x 2))题目中要求我们设计一个类似于fast-expt的求乘积的过程,并且只用对数的步数。(defin... 阅读全文
摘要:
练习1.16这道题题目特别长,说的无非就是要用一个不变量记录中间结果,然后写出对数步数内的通过迭代来计算幂的函数,当然了还要用到题目中括号内的那个关系。下面就直接上代码了:(define(fast-expt b n)(fast-expt-iter 1 b n))(define(fast-expt... 阅读全文
摘要:
(define(cube x) (* x x x))(define(p x) (- (* 3 x) (* 4 (cube x))))(define(sine angle)(if (not (> (abs angle) 0.1))angle(p (sine (/ angle 3.0)))))大家自... 阅读全文
摘要:
这道练习的翻译有误。原文是:Write a procedure that computes elements of Pascal’s triangle bymeans of a recursive process.正确的翻译应该是计算帕斯卡三角形的各个元素。y :0111121213133 14... 阅读全文
摘要:
这种题目太像是数学题目了,不过拿到编程上又有一些的难度。我们先根据题目中的条件,写出类似于第25页最下面的变换规则。我们先列出如下内容:a-- f(n-1)f(2)f(3) f(4)f(5)b-- f(n-2)f(1)f(2) f(3)f(4)c—f(n-3)f(0)f(1) f(2)f(3)于... 阅读全文
摘要:
我们先将Ackermann函数写入Edwin中,当然了,再获取结果之前应该先自己用笔算算。结果如下:(A 1 10);Value: 1024(A 2 4);Value: 65536(A 3 3);Value: 65536其中65536也就是16的四次方。接下来通过连续的n值来观察题目中随后给出的... 阅读全文
摘要:
以下是第一个加起两个正整数的方法,其中inc将参数加1,dec将参数减1。(define (+ a b)(if(= a 0) b (inc (+ (dec a) b))))用代换模型展示(+ 4 5)如下:(+ 4 5)(inc (+ 3 5))(inc (inc (+ 2 5)))(inc (... 阅读全文
摘要:
如果对前面的内容理解透彻了,看到这个表达式就知道直接将y换成guess即可。(define (improve guess x)(/(+ (* guess guess)) (* 2 guess)) 3))但是如果中写到这里就认为完成了那就错了,如果还是用书中的good-enough?的话,那也应该... 阅读全文
摘要:
练习1.7这道题回应了第15页所说的good-enough?并不是一个很好的检测方法。我们首先来按照题目要求用4组最大或最小的数来检测原文中的good-enough?(sqrt-iter 1.0 0.00000081)0.0009;Value: 0.3125863108711088(sqrt-i... 阅读全文
摘要:
练习1.6这道题通过由一个新版本的if来引出,主要讨论的还是应用序和正则序的问题。我看到“将if提供为一种特殊形式”时还满头雾水,并不太清楚什么特殊形式。当再返回看if的语法时才发现,这在第12页if的一般表达式下面一段。如果得到真值,解释器就去求值并返回其值。注意,在此处已经返回其值了,并没有... 阅读全文