您的位置:首页 > 其它

【SICP练习】57 练习2.27

2015-02-22 13:51 162 查看


练习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 ‘()))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: