该函数导致堆栈溢出超过大约2000步,有什么方法可以轻松优化它以使用更少的内存吗?优化Lisp递归随机游走
(defun randomwalk (steps state)
(displaystate state)
(if (equal steps 0) nil
(if (solved? state) t
(let ((nrmlstate (normalize state)))
(randomwalk (- steps 1) (applymove nrmlstate (nth (random
(length (getallmoves nrmlstate))) (getallmoves nrmlstate))))
)
)
)
)
您可能希望通过更好的代码格式和可重复的测试用例来改善您的问题。看到这个Stackoverflow帮助:https://stackoverflow.com/help/mcve –
正如Rainer所说,你的代码的格式非常糟糕,很难看到它的作用(缺少一个测试用例也无济于事) ,但是在大多数实现中(但是*不*由语言保证)编译这个函数应该导致一个不消耗堆栈的进程。 (有些实现可能不需要编译步骤,甚至是。) – tfb