如果每次递归都创建一个新对象,那么空间复杂度是否为O(1)?

问题描述 投票:0回答:1

假设对象是一个虚拟列表节点,它仅在创建它的相同递归级别中使用。

我觉得我不确定的部分是当递归级别结束时是否可以回收对象的空间。如果空间可以回收,我会说空间复杂度是O(1),否则我觉得是O(M),其中M是递归数。

algorithm space-complexity
1个回答
1
投票

能够回收与激活帧关联的某些(固定大小)对象不会改变渐近复杂性。它只会改善实际资源使用的常量。

[仅基于一次分配的激活帧的数量,而不是它们的精确大小,该算法的存储使用为O(M)。

当然,每帧使用100个字节无疑比1000或10000更好,但是像这样的常量因素对complexity毫无贡献,这就是为什么我们使它们以O表示法消失。

将其降低到O(1)将需要对控制流本身进行重组,例如切换到尾调用或迭代。

© www.soinside.com 2019 - 2024. All rights reserved.