【发布时间】:2011-12-16 22:12:44
【问题描述】:
假设在 C++ 中,您对递归函数执行了太多递归调用,并出现堆栈溢出错误。
您将如何以连续传递样式重写此代码以避免堆栈溢出?
我在用 C++ 描述这个有点困难。
【问题讨论】:
-
对于这样一个抽象的问题,除了抽象的答案之外,你什么也得不到。也许您应该发布导致堆栈溢出的示例函数,然后您将获得有关如何修复它的具体答案。 (就个人而言,我会尝试重写函数以使用累加器,然后再重写它以使用延续......)
-
@ildjarn,感谢您的通知。我实际上正在寻找一个抽象的答案。如果我使用累加器,我最终不会将其重写为 C++ 中的正常迭代吗?
-
@highwind7777 :您希望得到什么样的抽象答案? “使用有状态函子”?这似乎太高级了,无济于事,但是如果没有更详细的问题,很难想出更具体的东西...关于使用累加器,不,只要您的编译器支持 TCO,您就可以坚持使用递归。
标签: c++ recursion stack-overflow continuations