SICP 習題 (1 39)解題總結

2021-06-21 12:03:38 字數 546 閱讀 6857

sicp 習題1.39沿著習題1.37,1.38的方向繼續前行,要求我們根據德國數學家j.h.lambert的公式定義tan-cf過程,用於計算正切函式的近似值。

j.h.lambert的公式如下:

可以發現,這個和之前的無窮連分式是一樣一樣的,所不同的就是n是乙個變數,不是固定數值。

不過這個已經難不倒我們啦,可以從公式中發現,除了第乙個n是x,其它的n都是x平方,

d對應的數值是1,3,5,就是所有奇數,以數字n為下標的話可以通過((n * 2)-1) 得到。

最後直接定義以下過程搞定:

(define (tan-cf x k)

(cont-frac

(lambda (i)

(if (= i 1)

x (* x x)))

(lambda (i)

(- (* i 2.0) 1))

k))

SICP 習題 1 14 解題總結

sicp 習題 1.14要求計算出過程count change的增長階。count change是書中1.2.2節講解的用於計算零錢找換方案的過程。要解答習題1.14,首先你需要理解count change的工作方式,要理解count change的工作方式,最好是自己去實現一遍count chan...

SICP 習題 1 22 解題總結

sicp 習題 1.22 要求改進題中列舉出來檢查素數的過程,用來求1000,10000,100 000,還有1000 000附近的素數,然後比較求這些素數的時間,看是否符合 n 的複雜度。要完成這道題首先要將題目中列出的過程照抄到你的scheme環境中。因為書中的 使用了 runtime 過程,我...

SICP 習題 1 25 解題總結

sicp 習題 1.25 就是我上面說過的傷自尊的題了。習題1.25說到有個叫allyssa p.hacker的人說expmod過程完全沒有必要搞那麼麻煩,直接使用前面的fast expt過程和remainder過程就好了,她 叫alyssa的應該是女的吧 覺得可以這樣定義expmod define...