我正在从Conrad Barski的"Lisp之乡"一书中学习Lisp.现在我遇到了我的第一个绊脚石,作者说:
以这种方式调用自己不仅允许在Lisp中使用,而且经常受到强烈鼓励
在显示以下示例函数以计算列表中的项目之后:
(defun my-length (list)
(if list
(1+ (my-length (cdr list)))
0))
Run Code Online (Sandbox Code Playgroud)
当我my-length用包含一百万个项目的列表调用此函数时,我收到堆栈溢出错误.因此,无论你休想有一个列表,长期在Lisp的(所以也许我用例是没用的),或者还有另一种方法来计算在这么长的列表项.你能否对此有所启发?(顺便说一句,我在Windows上使用GNU CLISP).