C ++如何使用延续传递方式?

时间:2011-10-27 22:53:32

标签: c++ recursion stack-overflow continuations

假设在C ++中你在递归函数上做了太多的递归调用并且出现了堆栈溢出错误。

如何以延续传递方式重写它以避免堆栈溢出?

我在C ++中描绘这个有点困难。

1 个答案:

答案 0 :(得分:4)

那是一个相当开放的问题,但Eric Lippert写了一个(实际上是两个)而不是long series about exactly this topic。不完全正确的语言,但它应该是相当有用的,并给出一般的想法。

虽然在C ++中实现CPS似乎只是为了修复单个递归函数而做了很多工作,但是当你可以使用某种算法使函数迭代一个队列时(你仍然使用基本相同数量的数据,但是堆远远不那么受限制了。)