【问题标题】:Lisp stack overflow bound [closed]Lisp堆栈溢出边界[关闭]
【发布时间】:2013-05-12 12:32:04
【问题描述】:

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

【问题讨论】:

  • 这个问题实在是太宽泛了,无法给出有意义的答案。将您的递归算法更改为迭代算法或尾递归算法,这是我们最多能说的。
  • 你在编译函数吗?如果是这样:对optimize 使用什么设置?
  • 我看到在 Lisp 的第 42 行,你偏离了 C 正在做的事情;您以发生失控递归的方式更改了密钥检查。不用等,这是第 47 行!我的水晶球需要一个新的偏转线圈; 2 开始看起来像 7。

标签: algorithm lisp stack-overflow


【解决方案1】:

您有三个选择:

  1. 将算法重写为尾递归或等效的迭代
  2. 一起改变算法
  3. 增加 lisp 的堆栈大小

【讨论】:

  • 第三个选项怎么做?在 Windows 操作系统上可以吗?
  • 你用的是什么 lisp?可用的命令参数有哪些?文档是怎么说的?
猜你喜欢
  • 2012-06-02
  • 1970-01-01
  • 2011-07-11
  • 2011-07-30
  • 1970-01-01
  • 2018-08-27
  • 1970-01-01
  • 2016-06-02
  • 2014-07-20
相关资源
最近更新 更多