Recursion 使用手动维护的堆栈重新实现递归的好处?

Recursion 使用手动维护的堆栈重新实现递归的好处?,recursion,stack,stack-overflow,Recursion,Stack,Stack Overflow,我读到,手动维护堆栈有时可以避免递归算法的堆栈溢出,因为手动维护的堆栈分配在堆中,堆的大小比运行时线程堆栈大得多。使用手动维护的堆栈重新实现递归还有其他好处吗?为什么不直接增加程序的堆栈大小,这更简单?如果只需增加堆栈大小就可以解决问题,那么这几乎肯定是正确的解决方案 如果您的算法很复杂,手动维护的堆栈可能会节省您的时间和空间。您可以在需要时准确地分配和释放内存,并重用空间,特别是使用多重递归或条件递归。如果参数的大小不同,则可以保存存储空间,该存储空间仅用于每次调用中所需的内容 如果你做得好的

我读到,手动维护堆栈有时可以避免递归算法的堆栈溢出,因为手动维护的堆栈分配在堆中,堆的大小比运行时线程堆栈大得多。使用手动维护的堆栈重新实现递归还有其他好处吗?为什么不直接增加程序的堆栈大小,这更简单?

如果只需增加堆栈大小就可以解决问题,那么这几乎肯定是正确的解决方案

如果您的算法很复杂,手动维护的堆栈可能会节省您的时间和空间。您可以在需要时准确地分配和释放内存,并重用空间,特别是使用多重递归或条件递归。如果参数的大小不同,则可以保存存储空间,该存储空间仅用于每次调用中所需的内容

如果你做得好的话,你也有可能节省维护参数空间的时间。。。如果算法碰巧浪费时间,用自动堆栈获取多余的数据。我不会指望这个

重新发明轮子通常是个坏主意:您必须调试和维护新代码。除非旧轮子是长方形…:-)