作者: Noritsugu Nakamura
日時: 2003/3/20(23:53)
中村 のりつぐ です。

In article <20030318.151709.730982190.tsutomu@...> 
Tsutomu Hiroshima <tsutomu@...> wrote:
> 今目の前にあるシステムには clisp しか無いのですが,
> 家で試したところ,gcl では (compile 'foo) をコメントアウトすると
> スタックオーバーフローします.

そんな裏技が!

やってみたら以下のように答えが出ました。


GCL (GNU Common Lisp)  Version(2.5.0) Mon Mar  4 16:27:59 EST 2002
Licensed under GNU Library General Public License
Contains Enhancements by W. Schelter

>(defun foo (a x)
>  (if (zerop (mod x a))
>      (princ (list a (/ x a))))
>  (if (> a 1001) (foo (- a 1) (- x 1))))

FOO

>(compile 'foo)

Compiling gazonk0.lsp.
End of Pass 1.  

;; Note: Tail-recursive call of FOO was replaced by iteration.
End of Pass 2.  
OPTIMIZE levels: Safety=0 (No runtime error checking), Space=0, Speed=3
Finished compiling gazonk0.lsp.
Loading gazonk0.o
start address -T 832cc60 Finished loading gazonk0.o
#<compiled-function FOO>

>(foo 2003 100000)
(1849 54)
NIL

       中村 典嗣  E-mail:     nnakamur@...