SICP練習 32 練習1 38

2021-06-28 18:42:25 字數 569 閱讀 3851



練習1.38

我最喜歡做數學上的觀察題了,這裡也有乙個di,其依次為1,2,1,1,4,1,1,6,1,1,8……我最先看到的是除了一開始的2個之外,每三個數字的規律是前面是兩個1,後面是個遞增的偶數。於是我們便可輕而易舉的寫出這個函式了。

(define (d i)

(if (= (remainder (- i 2) 3) 0)

(* (+ (/ (- i 2) 3) 1) 2)

1))而n一直都是1,於是我們定義為:

(define (n i) 1)

由於題中是e-2的連分式,所以在最後的結果上應該再加上2.0。

(define (e k)

(define (n i) 1)

(define (d i)

(if (= (remainder (- i 2) 3) 0)

(* (+ (/ (- i 2) 3) 1) 2)

1))(+ (cont-frac n d k) 2.0))

下面我們來測試一下:

(e 2015)

;value: 2.718281828459045

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...

SICP練習 17 練習1 23

練習1.23 首先我們按照題目要求來寫出相應的next函式,然後再修改find divisor函式。define next x if x 2 3 n 2 define find divisor ntest divisor cond square test divisor n n divides?te...