Scheme 方案的深度反转

Scheme 方案的深度反转,scheme,racket,Scheme,Racket,当输入((12)(34))列表时,我想将其反转,但不是((34)(12)),这就是reverse所做的,所以我尝试编写一个深度反转过程: (define (deep-reverse l) (cond ((null? l) nil) (not (pair? (car l)) l) (else (append (deep-reverse (cdr l)) (list (car l)))))) 但它只是回退((12)(34))。出了什么问题,我如何让它工作?试试:

当输入((12)(34))列表时,我想将其反转,但不是((34)(12)),这就是reverse所做的,所以我尝试编写一个深度反转过程:

(define (deep-reverse l)
  (cond ((null? l) nil)
        (not (pair? (car l)) l)
        (else (append (deep-reverse (cdr l)) (list (car l))))))
但它只是回退((12)(34))。出了什么问题,我如何让它工作?

试试:

(define (deep-reverse l) (map reverse l))
以上是最简单的答案;一个真正的答案取决于你到底期望深度反转做什么。请看我对你的问题的评论

如果你想要一切,一路走来:

(define (deep-reverse l)
  (if (list? l)
      (reverse (map deep-reverse l))
      l))
以下是它的工作原理(正确):

尝试:

以上是最简单的答案;一个真正的答案取决于你到底期望深度反转做什么。请看我对你的问题的评论

如果你想要一切,一路走来:

(define (deep-reverse l)
  (if (list? l)
      (reverse (map deep-reverse l))
      l))
以下是它的工作原理(正确):


您还必须在代码中对
汽车进行深度倒车。否则,您将无法深入反转列表的最前面部分

(define (deep-reverse l)
  (cond ((null? l) nil)
        (not (pair? (car l)) l)
        (else (append (deep-reverse (cdr l)) (list (deep-reverse (car l)))))))

您还必须在代码中对
汽车进行深度倒车。否则,您将无法深入反转列表的最前面部分

(define (deep-reverse l)
  (cond ((null? l) nil)
        (not (pair? (car l)) l)
        (else (append (deep-reverse (cdr l)) (list (deep-reverse (car l)))))))

一个好的开始是与列表相反的过程。然后将其修改为递归应用于列表中的每辆车:

(define (reverse x)
  (define (go items tail)
    (if (null? items) tail
        (go (cdr items) (cons (car items) tail))))
  (go x ()))

(define (deep-reverse x)
  (define (go items tail)
    (cond ((null? items) tail)
          ((not (pair? items)) items)
          (else (go (cdr items) (cons (go (car items) ()) tail)))))
  (go x ()))
深度反转的应用将是:

    (define x (list (list 1 (list 2 3) 4) 5 6 (list 7 8) 9 10)) (display x) (deep-reverse x)

   ((1 (2 3) 4) 5 6 (7 8) 9 10)
=> (10 9 (8 7) 6 5 (4 (3 2) 1))

一个好的开始是与列表相反的过程。然后将其修改为递归应用于列表中的每辆车:

(define (reverse x)
  (define (go items tail)
    (if (null? items) tail
        (go (cdr items) (cons (car items) tail))))
  (go x ()))

(define (deep-reverse x)
  (define (go items tail)
    (cond ((null? items) tail)
          ((not (pair? items)) items)
          (else (go (cdr items) (cons (go (car items) ()) tail)))))
  (go x ()))
深度反转的应用将是:

    (define x (list (list 1 (list 2 3) 4) 5 6 (list 7 8) 9 10)) (display x) (deep-reverse x)

   ((1 (2 3) 4) 5 6 (7 8) 9 10)
=> (10 9 (8 7) 6 5 (4 (3 2) 1))

你想要什么答案?(1(2 3)4)和(1(2(3 4))的深度反转是什么?我可以看到一种可能性:反转列表,在反转列表中
((4 3)(2 1))
,在这种情况下,您只需要对反转列表进行递归调用。您想要什么答案?(1(2 3)4)和(1(2(3 4))的深度反转是什么?我可以看到一种可能性:反转列表,在反转列表中
((4 3)(2 1))
,在这种情况下,您只需要对反转列表进行递归调用作业标记是,你不应该要求人们再使用它,但这只适用于列表中的一个级别的列表,对吗?对。你想一路往下看吗?家庭作业标签是,你不应该要求人们再使用它,但这只适用于列表中的一个级别的列表,对吗?对。你想一路下来吗?