Moe*_*Moe 5 scheme tail-call-optimization
我已经阅读了一些关于Scheme中尾调优化的内容.但我不确定我是否理解尾调用的概念.如果我有这样的代码:
(define (fac n)
(if (= n 0)
1
(* n (fac (- n 1)))))
Run Code Online (Sandbox Code Playgroud)
这可以优化,以便它不会占用堆栈内存吗?或者尾部调用优化只能应用于这样的函数:
(define (factorial n)
(let fact ([i n] [acc 1])
(if (zero? i)
acc
(fact (- i 1) (* acc i)))))
Run Code Online (Sandbox Code Playgroud)