有人可以解释递归在这些过程中是如何工作的

时间:2012-10-17 18:23:04

标签: recursion lisp scheme sicp mit-scheme

这是使用麻省理工学院计划,来自臭名昭着的SICP。我无法绕过正在发生的事情。 这是计算N!的过程。

(define (factorial n)
     (if (= n 0)
          1
          (* n (factorial (- n 1)))))

这是计算斐波纳契的程序

(define (fib n)
   (cond ((= n 0) 0)
         ((= n 1) 1)
   (else (+ (fib (- n 1))
            (fib (- n 2))))))

2 个答案:

答案 0 :(得分:2)

在SICP的书中,有一个明确的,逐步解释linear recursion如何工作(对于阶乘的例子),并且还有一个很好的解释,其中有一个很好的树形图,详细说明了tree recursion (对于斐波那契的例子)。

如果您需要一个更容易理解的解释递归在一般方案计划中如何运作,我建议你看一下The Little SchemerHow to Design Programs,这两本书都会教你如何理解一般的递归过程。

答案 1 :(得分:1)

递归需要一些时间来理解,所以请耐心等待。

我建议您想象自己是计算机,然后逐步计算出(factorial 4)的计算方式。通过将(factorial 4)(factorial 3)(等)视为完全不同的实体,让自己同时多次“在函数内”。