假设在C ++中你在递归函数上做了太多的递归调用并且出现了堆栈溢出错误。
如何以延续传递方式重写它以避免堆栈溢出?
我在C ++中描绘这个有点困难。
答案 0 :(得分:4)
那是一个相当开放的问题,但Eric Lippert写了一个(实际上是两个)而不是long series about exactly this topic。不完全正确的语言,但它应该是相当有用的,并给出一般的想法。
虽然在C ++中实现CPS似乎只是为了修复单个递归函数而做了很多工作,但是当你可以使用某种算法使函数迭代一个队列时(你仍然使用基本相同数量的数据,但是堆远远不那么受限制了。)