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