【发布时间】:2011-11-01 10:42:52
【问题描述】:
我知道我们在递归算法和迭代算法之间确实存在空间复杂度差异。但是,我们之间是否也存在时间复杂度差异? 例如:如果我有一个递归计算列表中节点数的程序,然后我实现与迭代相同的程序,它的时间复杂度(即 O(n))会有什么不同吗?谢谢
【问题讨论】:
标签: time-complexity
我知道我们在递归算法和迭代算法之间确实存在空间复杂度差异。但是,我们之间是否也存在时间复杂度差异? 例如:如果我有一个递归计算列表中节点数的程序,然后我实现与迭代相同的程序,它的时间复杂度(即 O(n))会有什么不同吗?谢谢
【问题讨论】:
标签: time-complexity
简短的回答:不。
除非您使用动态规划等优化算法,否则时间复杂度不会发生变化。空间复杂度也没有变化,不知道你从哪里想到的..
但是,在许多编程语言中,使用递归存在固有的开销,因为它们还必须存储堆栈,这会使用更多内存。这可能会更慢,尤其是在它不是尾递归的情况下。
【讨论】: