【问题标题】:If a new object is created in each recursion, is the space complexity O(1)?如果每次递归都创建一个新对象,空间复杂度是O(1)吗?
【发布时间】:2020-02-13 14:44:52
【问题描述】:

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

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

【问题讨论】:

  • > 否则我觉得它是 O(M),其中 M 是递归时间。 ...这是从空间到时间的无意滑落吗?

标签: algorithm space-complexity


【解决方案1】:

能够回收一​​些与激活帧相关的(固定大小)对象不会改变渐近复杂度。它只会提高实际资源使用的常数。

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

当然,每帧使用 100 字节无疑比 1000 或 10000 更好,但是像这样的常数因素不会导致复杂性,这就是我们让它们在 O 表示法中消失的原因。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-01
    • 2019-10-08
    • 1970-01-01
    • 2016-04-21
    • 1970-01-01
    • 2022-01-22
    • 2013-11-30
    • 2016-04-01
    相关资源
    最近更新 更多