【发布时间】:2011-05-29 15:29:02
【问题描述】:
是否可以控制递归调用的次数?
从一个基本的测试程序我得到的递归深度刚刚超过 18k
这取决于堆栈大小....
有没有办法用大量堆栈设置一块内存(可能是一个线程)以增加递归深度?
【问题讨论】:
-
无限深。或者至少在支持尾调用的语言中。
-
3 级深... ref> -
Afaik 抖动不一定需要尾调用指令来重写尾调用。根据我在 .net 3.5 上的回忆,只有 64 位抖动会重写尾调用。
-
您必须了解 99.99% 的代码不会破坏堆栈,而 99.99% 的代码会破坏堆栈,因为它是无限递归的。只剩下 0.02% 的代码通过使用有限的数量来破坏堆栈。只有这些程序可以通过增加堆栈而受益。
-
我可以知道你的统计数据的来源吗? :)