如何启用递归函数以避免堆栈溢出?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何启用递归函数以避免堆栈溢出?相关的知识,希望对你有一定的参考价值。

如果我在Java中有一个递归函数,我可以使用以下代码无限地调用它:

void recfunction()

    recfunction();
    System.gc();

我怎么能用C ++做到这一点?

答案

没有标准方法可以强制c ++编译器对递归函数执行尾调用优化。

话虽如此,带-O2的gcc8实际上会在可能的情况下执行尾调用优化。

https://godbolt.org/z/tSDODA

以上是关于如何启用递归函数以避免堆栈溢出?的主要内容,如果未能解决你的问题,请参考以下文章

使用 setTimeout 避免堆栈溢出

“就地”MSD 基数排序、堆栈空间和堆栈溢出

堆栈溢出一般是由啥原因导致的?

递归 - 堆栈溢出错误

递归代码在数组列表偏大的情况下会导致堆栈溢出。一个解决办法

在递归函数中处理大数组时堆栈溢出