在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)))
Run Code Online (Sandbox Code Playgroud)
并且说"我们将一个递归过程称为事实 - 因为生成一个迭代过程似乎令人不安.但是,这个过程确实是迭代的:它的状态完全被它的三个状态变量捕获,并且一个解释器需要跟踪只有三个变量才能执行这个过程."
我不明白作者的意思.递归过程和递归过程之间有什么区别?为什么他说下面的递归过程产生一个迭代过程?