SICP 习题 2.27 又开始有些难度了,题目要求我们实现reverse的升级版deep-reverse,就是不仅要将一个列表的元素顺序倒过来,还要将列表中所有子列表的元素也倒过来。
想清楚思路以后也不算太难,其实就是在对所有元素进行倒转的过程中加多一个判断,如果正在处理的元素是一个列表,则对该列表递归调用deep-reverse过程,如果正在处理的元素是一个简单的元素则直接返回该元素。
我的代码如下:
(define (deep-reverse input-list) (if (null? input-list) ‘() (append (deep-reverse (cdr input-list)) (if (list? (car input-list)) (list (deep-reverse (car input-list))) (list (car input-list))))))
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/keyboardota/article/details/39910345