目前我有滤波函数
(define filter
(λ (f xs)
(letrec [(filter-tail
(λ (f xs x)
(if (empty? xs)
x
(filter-tail f (rest xs)
(if (f (first xs))
(cons (first xs) x)
'()
)))))]
(filter-tail f xs '()))))
应当具有作为过滤器的功能
然而,它输出作为
(filter positive? '(-1 2 3))
>> (3 2)
但正确的返回应为(2 3)
我想知道如果代码是正确使用尾递归,如果是的话,我应该使用反向改变答案?
是的,你需要扭转结果。 – uselpa
这是否适用于所有尾递归? – Chase
是的,除非你写一个“反向”程序;-) – uselpa