【发布时间】:2016-08-29 04:25:48
【问题描述】:
我试图用尾递归来解决 n rooks 问题,因为它比标准递归更快,但我无法弄清楚如何让它全部工作。我查看了这个问题背后的理论,发现解决方案是由一个叫做“电话号码”的东西给出的,它由以下等式给出:
其中 T(1) = 1 且 T(2) = 2。
我创建了一个递归函数来评估这个方程,但它只能在 T(40) 之前快速运行,我需要它来计算 n > 1000 的位置,目前据我估计需要数天的计算时间。
尾递归似乎是我最好的选择,但我希望这里有人可能知道如何使用尾递归来编程这种关系,因为我不太了解它。
我正在使用 LISP,但愿意使用任何支持尾递归的语言
【问题讨论】:
标签: recursion lisp common-lisp tail-recursion gnu-common-lisp