【发布时间】:2020-11-14 14:19:06
【问题描述】:
长期以来,我一直在尝试使用尾递归(迭代)在 Racket 中实现附加过程。
到目前为止我做的最好的解决方案是:
(define (my-reverse lst)
(define (iter lst reversed)
(if (null? lst)
reversed
(iter (cdr lst) (cons (car lst) reversed))))
(iter lst '()))
(define (append-iter el lst)
(my-reverse (cons el (my-reverse lst))))
(append-iter 4 '(1 2 3)) ; (1 2 3 4)
我的问题是是否有更好的实现方式?
【问题讨论】:
-
有趣的是,奥斯卡和威尔似乎忘记了他们在 8 年前为同一个问题写过答案
-
请链接。 :) 啊,傻瓜。谢谢!如果现在的答案也和当时一样,那将是最有趣的......@Sylwester
-
@Sylwester 啊,是的,我记得那个。不过,它对解决方案还有一个要求,即“功能性”。这个我更多地认为是对问题中OP代码的评论请求,如何改进它。所以我想我会推荐我对 dup 的回答为“更好的方法”。 :)
标签: recursion functional-programming scheme racket tail-recursion