我看过一些有关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)))))