这是使用麻省理工学院计划,来自臭名昭着的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))))))
答案 0 :(得分:2)
在SICP的书中,有一个明确的,逐步解释linear recursion如何工作(对于阶乘的例子),并且还有一个很好的解释,其中有一个很好的树形图,详细说明了tree recursion (对于斐波那契的例子)。
如果您需要一个更容易理解的解释递归在一般方案计划中如何运作,我建议你看一下The Little Schemer或How to Design Programs,这两本书都会教你如何理解一般的递归过程。
答案 1 :(得分:1)
递归需要一些时间来理解,所以请耐心等待。
我建议您想象自己是计算机,然后逐步计算出(factorial 4)
的计算方式。通过将(factorial 4)
和(factorial 3)
(等)视为完全不同的实体,让自己同时多次“在函数内”。