SICP練習 47 練習2 6

2022-04-11 03:31:50 字數 941 閱讀 2407

練習2.6

如果這道題還沒有做的請務必要先自己思考並檢驗。如果沒有能夠求出來,也可以在看完我推導的one之後自己再來推導two。

一開始我也不懂題目中的兩個式子是什麼意思,甚至連怎麼用都不知道。但我猜測到是不是可以用這兩個式子來構造出one,以及two,還有後面的無數多個。既然有了想法,那麼就開工吧。我把在edwin中寫的截圖下來,因為edwin會自動縮排比較直觀,比word好用些。

同樣的,two可以用(add-1 one)來求出。以下依舊是截圖咯。

不知道大家能不能由此看出博主的作業系統呢?

lambda

是不是很有意思呢?我們先不急著求題目剩餘的部分也就是加法過程的定義,還是先回味一下好吧,哈哈。相信大家求出one的時候已經猜出了two,求出了two的時候就幾乎可以肯定three、four、five了。three如下。也就通過不斷的巢狀f。

(define three

(lambda (f)

(lambda (x)

(f (f (f x))))))

因此我們相信加法,比如4+5,就是將前者的4個f和後者的5個f累加成巢狀的9個f。因此我們將其表示出來。

(define +

(lambda (m)

(lambda (n)

(lambda (f)

(lambda (x)

(m f( n f x)))))))

閒的無聊就來寫寫」+「的展開式好了。

SICP練習 26 練習1 32

練習1.32 因為遞迴比迭代要更容易實現,因此我先考慮的遞迴。先將sum和product都列出來。define sum term a next b if a b 0 term a sum term next a next b define product term a next b if a b 1...

SICP練習 26 練習1 32

練習1.32 因為遞迴比迭代要更容易實現,因此我先考慮的遞迴。先將sum和product都列出來。define sum term a next b if a b 0 term a sum term next a next b define product term a next b if a b 1...

SICP練習 26 練習1 32

練習1.32 因為遞迴比迭代要更容易實現,因此我先考慮的遞迴。先將sum和product都列出來。define sum term a next b if a b 0 term a sum term next a next b define product term a next b if a b 1...