练习2.27:现有 (list (list 1 2) (list 3 4 5)) 将其翻转构造成 (list (list 5 4 3) (list 2 1))
scheme代码:
**(define (deep_reverse tree)
(define (deep_reverse_it tree re)
(cond ((null? tree)
re)
(else
(deep_reverse_it (cdr tree)
(cons (if (pair? (car tree))
(deep_reverse (car tree))
(car tree))
re)))))
(deep_reverse_it tree '()))
(deep_reverse (list (list 1 2) (list 3 4 5)))
((5 4 3) (2 1))**
这个程序很巧妙地运用了迭代和递归思想,在迭代过程 deep_reverse_it 中运用了递归调用了deep_reverse_it外部的函数。