为什么去除尾递归是有益的?

只是一个整体的数据结构问题:为什么在快速排序中专门删除尾递归是有益的,即使它不会改变复杂性?

回答

在最坏的情况下,快速排序需要 O(N 2 ) 时间。

在最坏的情况下,如果每个调用在两半上分别递归,它也需要 O(N) 堆栈空间。

这在调用堆栈上浪费了太多空间。

快速排序的实际实现在较小的一半上递归,然后循环对较大的一半进行排序。这将最坏情况下的堆栈消耗限制在最坏情况下为 O(log N),这是非常合理的。

如果你被要求对一个包含 100000000 个项目的数组进行排序,那么你的调用深度 27 级是可以的,但它们深度 10000000 级绝对不行。


以上是为什么去除尾递归是有益的?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>