我已经有了反转列表的代码:
(define (myreverse lst)
(if (null? lst)
lst
(append (reverse (cdr lst))
(list (car lst)))))
但是我只想使用lectrec
,cons
,car
和cdr
来做到这一点。我该怎么办?
答案 0 :(得分:0)
不带附加内容来反转列表的标准方法是使用辅助函数REVAPPEND,如下所示:
(define (reverse x) (revappend x '()))
(define (revappend x y)
(if (null? x)
y
(revappend (cdr x) (cons (car x) y))))
现在,如果您想将反向作为单个功能实现,则可以使用LETREC在本地定义REVAPPEND帮助程序,例如
(define (reverse x)
(let revappend ((x x) (y '()))
...))
这只是一个入门模板,请随时询问是否需要更多帮助。