【SICP练习】57 练习2.27
練習(xí)2.27
又是修改程序的題目,要求我們寫出的deep-reverse函數(shù)要將表中的元素也反轉(zhuǎn)過來,這其中應(yīng)該要用到遞歸來實(shí)現(xiàn)吧。
(define (deep-reverse tree)
???(cond ((null? tree) ‘())
????????? ((not (pair? tree)) tree)
????????? (else (reverse (list (deep-reverse(car tree))
?????????????????????????? (deep-reverse (cadrtree)))))))
但是對(duì)于((1 2) (3 4) (5 6))這種,上面的函數(shù)就無(wú)法按我們的剛才的想法來返回了。它的返回值會(huì)是(4 3) (2 1)),而我們要的返回值則是((6 5) (4 3) (2 1))。因此要對(duì)程序進(jìn)行修改。
(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 ‘()))
總結(jié)
以上是生活随笔為你收集整理的【SICP练习】57 练习2.27的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdu1160 dp
- 下一篇: 去掉登陆下的“扫一扫,访问微社区