1

这是使用来自臭名昭著的 SICP 的 MIT 方案。我只是无法理解正在发生的事情。这是计算的过程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))))))
4

2 回答 2

2

在 SICP 书中,有一个关于线性递归如何工作的清晰、逐步的解释(对于阶乘示例),并且还有一个很好的解释,其中包含一个很好的树形图,详细说明了树递归(对​​于斐波那契示例)。

如果您需要更容易理解的关于递归在 Scheme 程序中的一般工作原理的解释,我建议您看一下The Little SchemerHow to Design Programs,这两本书都会教您如何深入了解递归过程一般来说。

于 2012-10-17T18:34:31.837 回答
1

递归需要一些时间来理解,所以对自己要有耐心。

我建议假设您是计算机,并逐步了解您将如何计算(factorial 4). (factorial 4)通过将和(factorial 3)(等)视为完全不同的实体,允许自己同时多次“进入”一个函数。

于 2012-10-17T20:13:50.003 回答