【发布时间】:2015-07-19 00:55:50
【问题描述】:
特别是为什么我们要使用tailr 和headr?我无法理解。
(define (foo lst)
(cond
((not (list? lst)) lst)
((null? lst) lst)
(else (let* ((tail (cdr lst))
(head (car lst))
(tailr (foo tail))
(headr (foo head)))
(append tailr (list headr))))))
【问题讨论】:
-
Tail、head、tailr、headr 只是中间变量。整个 let* 块可以写成
(append (foo (cdr lst)) (list (foo (car lst))))。 -
这是作业还是考试题?这是一年中的那个时候,虽然我没有看到它在任何地方发布在网上,但我确实看到有人在 ideone 中输入了代码,以及ideone.com/fork/hqywYX;他们可以通过运行它看到它实际做了什么。
-
运行它...它递归地反转列表(也适用于嵌套列表)。
tailr和headr只是局部变量。