原创 SICP 習題 (2.5) 解題總結:複合數據的指數表示

SICP 習題 2.5 有點像是道數學題,首先要求我們證明可以將a和b的序對錶示爲2^a * 3^b,然後通過非負整數和算術運算表示序對。最後要求我們實現對應的cons, car 和cdr過程。這道題的根本就是複合數據的構成方式和解析方式

原创 SICP 習題 (1.45)解題總結

SICP 習題 1.45是對前面很多關於不動點的習題的總結。題目回顧了我們之前在1.3.3節使用的不動點尋找方法,當尋找y -> x/y 的不動點的時候,這個變換本身不收斂,需要做一次平均阻尼纔可以。對於y -> x/(y^2)這個變換也

原创 SICP 習題 (1.41)解題總結

SICP 習題1.41 看似和周邊的題目沒有關係,突然叫我們去定義一個叫double的過程,其實這道題的核心還是高階函數。題目要求我們定義一個過程double,它以一個過程作爲參數,這個作爲參數的過程已經約定是一個單參數過程。double

原创 SICP 習題 (2.4) 解題總結:序對的過程性表示

SICP 習題 2.4 是一道很有意思的題目,它在一定程度上會改變你對數據結構的認識。按題目的說法,這裏講到的是“序對的過程性表示”。序對大家應該熟悉了,前面幾道題都和序對有關係,那序對的“過程性表示”是什麼意思呢?簡單一點說就是用一種過

原创 SICP 習題 (1.44)解題總結

SICP 習題1.44 要求我們實現一個平滑函數的過程,和以往一樣,如果你太在意平滑函數的數學定義你就輸了。簡單的辦法就是直奔平滑函數的要求,其實就是給我們一個不清楚細節的函數f,要求我們返回一個過程專門計算(f (+ x dx)) ,

原创 SICP 習題 (1.43)解題總結

SICP 習題 1.43 是前面兩道題的延續,習題要求我們定義一個過程(repeat f n) ,其中f是一個單參數過程,題目要求我們通過repeat過程將過程f調用n次,注意是嵌套調用n次,不是連續調用n次。就是說結果應該是(f ( f

原创 SICP 習題 (2.12)解題總結 :區間的不同實現方式

SICP 習題 2.12 要求我們定義一個構造函數make-center-percent,它接收兩個參數,分別代表中心點和一個誤差百分比。我們需要通過這個構造函數產生一個區間。此外還需要定義一個選擇函數percent,用來獲取指定區間的誤

原创 SICP 習題 (1.39)解題總結

SICP 習題1.39沿着習題1.37, 1.38的方向繼續前行,要求我們根據德國數學家J.H.Lambert的公式定義tan-cf過程,用於計算正切函數的近似值。J.H.Lambert的公式如下:可以發現,這個和之前的無窮連分式是一樣一

原创 SICP 習題 (2.11)解題總結:區間乘法的優化

SICP 習題 2.11又出現Ben這個人了,如以前說到的,只要是Ben說的一般都是對的。來看看Ben說什麼,他說:“通過監測區間的端點,有可能將mul-interval分解爲9中情況,每種情況中所需要的乘法都不超過兩次”。所以這個叫Be

原创 SICP 習題 (1.46)解題總結:第一章的收官題

SICP 習題 1.46 要求我們寫一個過程iterative-improve,它以兩個過程爲參數,其中一個參數用來檢測猜測是否足夠好,另一個參數用來改進猜測。過程iterative-improve應該返回另一個過程,所返回的過程接收一個

原创 SICP 習題 (2.10)解題總結: 區間除法中除於零的問題

SICP 習題 2.10 要求我們處理區間除法運算中除於零的問題。題中講到一個專業程序員Ben Bitdiddle看了Alyssa的工作後提出了除於零的問題,大家留意一下這個叫Ben的人,後面會不斷出現這個人,只要是這個人提到的事情一般是

原创 SICP 習題 (2.1) 解題總結:用複合數據表示有理數

SICP 習題 2.1 要求我們做一個可以正確處理正數和負數的make-rat過程,用於生成一個有理數。條件是分母必須是正數。完成這道題本身比較簡單,就是簡單修改一下書中的make-rat過程就可以了。書中原本的make-rat過程如下:

原创 SICP 習題 (1.40)解題總結

SICP 習題1.40 是一道題幹很簡單,但是看起來很複雜,本質其實比較簡單的一道題。題目原題如下:請定義一個過程cubic, 它和newtons-method過程一起使用在下面形式的表達式裏:(newtons-method (cubic

原创 SICP 習題 (2.8) 解題總結:區間的減法

SICP 習題 2.8 需要我們完成區間運算的減法,區間運算的加法書中已經有了,代碼如下:(define (add-interval x y) (make-interval (+ (lower-bound x) (lower-boun

原创 SICP 習題 (2.2) 解題總結:用複合數據表示點和線段

SICP 習題 2.2要求我們使用這一節的數據抽象方法定義幾何裏“點”的概念,還要定義“線段”的概念,最後還要求我們定義midpoint-segment過程,這個過程根據參數中的線段進行計算,返回該線段的中點。題目還給出了一個print-