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)))))