2013-05-12 149 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