- 178 名前:デフォルトの名無しさん mailto:sage [2005/06/01(水) 12:52:55 ]
- ところで,Common Lisp で,末尾再帰の最適化をやってくれる処理系って,ど
んなものがあるでしょうか?xyzzy がバージョンアップしたみたいなので,試 してみたのだけど,やっぱりスタック数40,000 程度でオーバーフロー. (defun tail-rec (x y) (if (<= x 0) y (tail-rec (- x 1) (+ y 1)))) (tail-rec 40000 0) => オーバーフロー Petite Chez Scheme だったら 100,000,000 でも軽々動くのに.こういうのは 再帰にせず,堂々と loop で書くのが Common Lisp 的なのだろうか. (define (tail-rec x y) (if (<= x 0) y (tail-rec (1- x) (1+ y))) (tail-rec 100000000 0) => 100000000
|

|