|
|
1
1
如果你想使用递归,最好用尾部调用的形式来表达它(这样递归调用返回后除了返回之外什么都不做)。这样,大多数编译器将把尾部调用优化为一个简单的跳转,并且不使用任何堆栈空间。为了您的
如果您的编译器不支持尾部递归优化,您可以通过将函数体设置为循环来实现:
|
|
|
2
0
这个最简单的答案是不使用递归。 static 因此,它们可以重用,而不是每次调用merge时都为它们腾出空间(如果您对多线程应用程序感兴趣,则可能会产生不利影响)。看起来你没有任何可以安全使用的变量。 您还可以用另一个结构封装参数,这样就不必向新的堆栈调用传递三个指针,即一个参数占用的空间小于3。
还有一些方法 adjusting the stack size 以便应用程序能够处理预期的数据集。
|
|
|
DJ PRAGO_28 · java中显示零的MergeSort函数 3 年前 |