SICP練習 57 練習2 27

2021-06-28 19:10:07 字數 722 閱讀 6510



練習2.27

又是修改程式的題目,要求我們寫出的deep-reverse函式要將表中的元素也反轉過來,這其中應該要用到遞迴來實現吧。

(define (deep-reverse tree)

(cond ((null? tree) 『())

((not (pair? tree)) tree)

(else (reverse (list (deep-reverse(car tree))

(deep-reverse (cadrtree)))))))

但是對於((1 2) (3 4) (5 6))這種,上面的函式就無法按我們的剛才的想法來返回了。它的返回值會是(4 3) (2 1)),而我們要的返回值則是((6 5) (4 3) (2 1))。因此要對程式進行修改。

(define (deep-reverse lst)

(define (iter remainder-items result)

(if (null? remainder-items)

result

(iter (cdr remainder-items

(cons (if (pair? (car remainder-items))

(deep-reverse (car remainder-items))

(car remainder-items))

result))))

(iter lst 『()))

SICP練習 57 練習2 27

練習2.27 又是修改程式的題目,要求我們寫出的deep reverse函式要將表中的元素也反轉過來,這其中應該要用到遞迴來實現吧。define deep reverse tree cond null?tree not pair?tree tree else reverse list deep re...

2 27 演算法練習

時間限制 1.0s 記憶體限制 512.0mb 給定n個十六進製制正整數,輸出它們對應的八進位制數。輸入的第一行為乙個正整數n 1 n 10 接下來n行,每行乙個由09 大寫字母af組成的字串,表示要轉換的十六進製制正整數,每個十六進製制數長度不超過100000。輸出n行,每行為輸入對應的八進位制正...

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 於是繼而得出下...