【发布时间】:2013-06-19 16:57:12
【问题描述】:
在SICPSection 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 之类的递归过程称为生成迭代过程似乎令人不安。但是,该过程实际上是迭代的:它的状态完全由它的三个状态变量和一个解释器捕获只需跟踪三个变量即可执行流程。”
我不明白作者的意思。递归过程和递归过程有什么区别?为什么他说下面的递归过程生成了一个迭代过程?
【问题讨论】: