在 SICP第 1.2.1 节中,作者在下面给出了这样一个代码示例来展示如何使用迭代过程来解决阶乘问题:
(define (factorial n)
(fact-iter 1 1 n))
(define (fact-iter product counter max-count)
(if (> counter max-count)
product
(fact-iter (* counter product)
(+ counter 1)
max-count)))
并说“我们将诸如 fact-iter 之类的递归过程称为生成迭代过程似乎令人不安。但是,该过程实际上是迭代的:它的状态完全由它的三个状态变量捕获,解释器需要跟踪只有三个变量才能执行该过程。”
我不明白作者的意思。递归过程和递归过程有什么区别?为什么他说下面的递归过程生成了一个迭代过程?