我有这个代码:
(define (prog1 x y)
(let ([rel (related x y)])
(cond
[(null? rel) (list x)]
[else (cons x (map (lambda (d) (prog1 (neighbour d) y)) rel))])))
我想要做的是尝试让它尾递归。我知道我需要做类似的事情:
(define (prog1 x y)
(prog1-iter x y `()))
(define (prog1-iter x y acc)
(...
))
但我不确定如何从我的代码转到这段代码......我认为这是因为原件中有一个地图,我不确定如何将它合并到一个prog1-iter
. 有人可以指出我正确的方向!