SICP 習題 (2 1 4)拓展練習 初論

2021-07-16 12:38:02 字數 1476 閱讀 1611

我只討論練習2.15和2.16,前面的較簡單。

2.15和2.16不能孤立的看,首先我們想想這個所謂區間運算的實質是什麼?

沒錯,集合

我們重新定義加法

對於集合

a ,

b 定義c=

a+b 為一切x+

y 構成的集合(其中x∈

a 和y∈

b )

減法,乘法,除法類似

也容易定義c=

f(a,

b)為一切f(

x,y)

構成的集合(其中x∈

a 和y∈

b ) 考察r

=11/

r1+1

/r2 ,可以認為r=

f(r1

,r2)

,而f(

x,y)

=1x−

1+y−

1 自然對於r=

r1r2

r1+r

2 ,可認為r=

g(r1

,r2)

,而g(

x,y)

=xyx

+y當然因為電阻都是正數所以

f 和

g可以認為是相等的

這時再回頭看看alyssa p.hacker定義的區間運算,發現對於後一種運算,她是分開算的,即先算r1

r2,再算r1

+r2 ,最後將兩個相除。

在看看其對於區間的運算,容易發現,在分開算的過程中,算r1

r2時的變數和算r1

+r2 時的變數不同

也就是說alyssa

p.hacker的程式在算r=

r1r2

r1+r

2 的時候不是r=

g(r1

,r2)

,而是r=

g1(r

1,r2

)g2(

r1,r

2),其中g1

(r1,

r2)=

r1r2

,g2(

r1,r

2)=r

1+r2

如此若定義h=

g1g2

,則h就只能是: h(

x,y,

z,w)

=g1(

x,y)

g2(z

,w)(

x,z∈

r1,y

,w∈r

2)這樣算出來的r當然是不真確的了,故而可以回答2.15,正確

至於2.16,第一問已經由上面解答

第二問可以回答:即使可以做到算術閉包,也必須使使用者將要算的東西寫成表示式,之後程式在對表示式求結果(簡單地說就是不能像windows自帶的計算器那樣可以先按5/2得2.5在2.5*3,只能一次給出表示式然後直接得到乙個聯絡於這個表示式的結果)

演算法導論 習題2 1 4

有兩個各存放在陣列a和b中的n位二進位制整數,考慮它們的相加問題。兩個整數的和以二進位制形式存放在具有 n 1 個元素的陣列c中。請給出這個問題的形式化描述,並寫出偽 以下是我寫的c 如有錯誤請指出 include stdafx.h include include define n 20 using...

演算法導論習題2 1 4

coding utf 8 exercises 2.1 4 consider the problem of adding two n bit binary integers,stored in two n element arrays a and b.the sum of the two intege...

SICP習題1 6的解答

sicp就是名著 structure and interpretation of computer programs 著名的巫師書 wizard book 和紫書 purple book 雖說英文原版可以從網上合法 中文版翻譯也還不錯。閒話少敘,下面我們研究一下書中 1.1.7節的練習題1.6。原題...