2013-05-12 120 views
-2

我真的需要一个建议。我有一个递归调用数量很大的函数。其实我需要它。算法是正确的,它在C中工作,但是在lisp中,由于堆栈溢出,存在问题。我应该怎么做才能解决它?我怎样才能改变算法,以便能够在lisp中工作?Lisp堆栈溢出绑定

+0

这真正太宽泛的问题才能给出有意义的答案。将递归算法更改为迭代算法或尾递归算法,这是我们可以说的最多的。 – Cairnarvon 2013-05-12 12:33:50

+0

你在编译函数吗?如果是这样的话:使用'optimize'的什么设置? – 2013-05-12 18:34:44

+0

我在Lisp的第42行看到,你偏离了C所做的事情;你改变了一个关键的检查,发生失控递归。没有等待,它是第47行!我的水晶球需要一个新的偏转线圈; 2的开始看起来像7。 – Kaz 2013-05-18 05:40:49

回答

2

你有三个选择:

  1. 重写算法是尾递归或等价地,反复
  2. 更改算法一起
  3. 增加Lisp的堆栈大小
+0

如何做第三个选项?在Windows操作系统上可以吗? – user216799 2013-05-12 20:03:11

+0

您使用的是什么lisp?什么是可用的命令参数?文件说什么? – GoZoner 2013-05-12 23:07:33