【发布时间】:2011-02-17 20:22:38
【问题描述】:
我在 Scheme 中读过一些关于尾调用优化的文章。但我不确定我是否理解尾调用的概念。如果我有这样的代码:
(define (fac n)
(if (= n 0)
1
(* n (fac (- n 1)))))
这可以优化,使其不会占用堆栈内存吗? 还是只能将尾调用优化应用于这样的函数:
(define (factorial n)
(let fact ([i n] [acc 1])
(if (zero? i)
acc
(fact (- i 1) (* acc i)))))
【问题讨论】:
标签: scheme tail-call-optimization