小编zuo*_*zuo的帖子

SICP递归过程与迭代过程:使用递归过程生成迭代过程

在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)

并且说"我们将一个递归过程称为事实 - 因为生成一个迭代过程似乎令人不安.但是,这个过程确实是迭代的:它的状态完全被它的三个状态变量捕获,并且一个解释器需要跟踪只有三个变量才能执行这个过程."

我不明白作者的意思.递归过程和递归过程之间有什么区别?为什么他说下面的递归过程产生一个迭代过程?

iteration recursion sicp

8
推荐指数
1
解决办法
2036
查看次数

标签 统计

iteration ×1

recursion ×1

sicp ×1