在 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这样的递归过程称为生成迭代过程可能看起来令人不安。然而,该过程确实是迭代的:它的状态完全由其三个状态变量捕获,并且解释器只需要跟踪这三个变量即可执行该过程。”
我不明白作者的意思。递归过程和递归过程之间有什么区别?为什么他说下面的递归过程生成迭代过程?