I ' Я читал кое-что об оптимизации хвостового вызова в 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)))))