2.27

练习 2.27 修改练习2.18中所做的reverse过程,得到一个deep-reverse过程。它以一个表为参数,返回另一个表作为值,结果表中的元素反过来,其中的子树也反转。例如:

(define x (list (list 1 2) (list 3 4)))
x
((1 2) (3 4))

(reverse x)
((3 4) (1 2))

(deep-reverse x)
((4 3) (2 1))

 
(define (append list1 list2)
  (if (null? list1)
      list2
      (cons (car list1) (append (cdr list1) list2)))
  )
(define (reverse lst) 
  (if (null? (cdr lst))
      lst
      (append (reverse (cdr lst)) (list (car lst)))))
(define x (list (list 1 2) (list 3 4)))
x
x
 
((1 2) (3 4))
 
(reverse x)
 
((3 4) (1 2))
 
(define (deep-reverse lst) (reverse (map reverse lst)))
(deep-reverse x)
 
((4 3) (2 1))

results matching ""

    No results matching ""