如果递归解决方案在返回到某个级别之前连续调用自身(例如,~n次),则空间效率最多为o(n),因为n个调用中的每一个都占用了一定的堆栈空间。
这是否也意味着时间效率最好也为o(n),因为递归函数中的代码类似于运行n次的内部循环代码?

最佳答案

除了@Ben的答案之外,还有一种情况是“tail recursion”,当前堆栈帧被移除并替换为被调用者的堆栈帧,但只有当调用者的最后一个操作是返回被调用者的结果时当用一种完全函数式语言实现时,这可能导致O(n)时间函数具有O(1)空间。

关于algorithm - 递归解决方案的最佳大O时间效率是否总是与最佳空间效率相同?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11379267/

10-08 23:38