我正在做一个计划程序,它接受一个列表然后反转它。到目前为止,它适用于简单列表,它不包含任何子列表,但是当我测试列表包含子列表时,它会失败。请帮帮我哪里出错了。 这是代码:
(define deep-reverse
(lambda (L)
(cond
((empty? L) '())
(else (append (deep-reverse (rest L)) (list (first L)))))))
答案 0 :(得分:1)
(define (deeprev L)
(if (null? L) '()
(if (list? (car L))
(if (chek (car L)) (append (deeprev (cdr L)) (list (reverse (car L))))
(append (deeprev (cdr L)) (list (deeprev (car L)))))
(append (deeprev (cdr L)) (list (car L))))))
答案 1 :(得分:0)
首先,您使用的是未定义的Scheme函数。我将解决以下假设:
空?是空的吗?
休息是cdr
首先是汽车
您的代码通过获取列表中的第一个元素并将其添加到另一个列表来工作。但是,列表的第一个元素本身可以是列表。您需要测试以查看您正在处理的元素是原子还是列表。如果它是一个列表,那么你可以递归地调用深度反向。
如果您希望看到附加到此的代码,请发表评论。