SICP練習 54 練習2 22

2021-06-28 19:10:07 字數 498 閱讀 8176



練習2.22

題目中louis的第乙個程式將items中的元素乙個乙個的取出來然後平方然後」推「到answer中。而我們在上一題中則是迭代結構,是將元素平方後」推「到乙個大盒子中,而大盒子裡又有乙個元素被平方然後被」推「到另乙個稍微小點的大盒子中去。

而修改後的程式看似解決了問題,其實錯得更加離譜了。比如用(list 1 2 3 4 5)作為items一開始傳入,程式先將1取出來平方,然後推到最前面,但是其後呢?此時的answer是什麼,只不過是乙個nil而已。因此每隔乙個元素中間就有乙個nil。於是返回的結果會是如此的醜陋:( ( ( ( ( ) . 1 ) . 4 ) . 9 ) . 16 ) . 25)。如果你懷疑這個結果是不是真的是因為我剛才那樣的解釋,沒關係,看下面的這個檢驗。

(cons (cons (cons (cons (cons 『() 1 ) 4) 9 ) 16 ) 25 )

;value: ( ( ( ( ( ) . 1 ) . 4 ) . 9 ) .16 ) . 25)

SICP練習 54 練習2 22

練習2.22 題目中louis的第乙個程式將items中的元素乙個乙個的取出來然後平方然後 推 到answer中。而我們在上一題中則是迭代結構,是將元素平方後 推 到乙個大盒子中,而大盒子裡又有乙個元素被平方然後被 推 到另乙個稍微小點的大盒子中去。而修改後的程式看似解決了問題,其實錯得更加離譜了。...

SICP練習 7 練習1 11

這種題目太像是數學題目了,不過拿到程式設計上又有一些的難度。我們先根據題目中的條件,寫出類似於第 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 於是繼而得出下...

SICP練習 12 練習1 18

練習1.8 和前兩題一樣,依舊是只能用對數步數。而且這個迭代過程要基於加 加倍和折半運算。這乙個習題要用到前面的函式,因此最好的做法是,每次都將寫好的 儲存起來。load test1.18.scm 這行 可以用來載入 而儲存可以用c x,c w。以下是該題的 這次我們寫成塊結構 define x y...