这是尾递归吗?我想是的,但我不确定。此外,当我输入列表(1 2 3)
时运行程序时,其输出为(4 3 2)
。这是为什么 ?任何帮助将不胜感激。
感谢。
(define (add1-iter a-list)
(define (add1-helper curr-list result-list)
(if (null? curr-list)
result-list
(add1-helper (cdr curr-list)
(cons (add1 (car curr-list))
result-list))))
(add1-helper a-list '()))
答案 0 :(得分:3)
这是尾递归。
您有一个累加器(结果列表),当您从源头开始到结束迭代源中的元素时,您可以从头到尾构建列表。使用尾递归不可能得到相同的顺序。