这是什么类型的递归?

时间:2014-02-17 15:01:40

标签: racket

这是尾递归吗?我想是的,但我不确定。此外,当我输入列表(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 '()))

1 个答案:

答案 0 :(得分:3)

这是尾递归。

您有一个累加器(结果列表),当您从源头开始到结束迭代源中的元素时,您可以从头到尾构建列表。使用尾递归不可能得到相同的顺序。