【发布时间】:2011-12-16 09:27:41
【问题描述】:
比如说,斐波那契数列的迭代和递归版本。它们具有相同的时间复杂度吗?
【问题讨论】:
-
有几种迭代算法用于计算斐波那契数列和几种递归算法,复杂度各不相同。
-
我认为您可以合理地说,如果它们没有相同的复杂性,那么它们就不是“相同算法”的迭代和递归版本。它们是不同的算法,当然计算相同结果的不同算法不一定具有相同的复杂性。也就是说,用相同的名称来指代相关算法组是很常见的。例如,快速排序的行为会有所不同,具体取决于您选择枢轴的方式以及处理分区两侧的顺序,但所有可能性通常都称为“快速排序”。
-
... 由此可见,是否可以将两位代码描述为“相同的算法”在某些情况下取决于您的语言/编译器是否实现尾递归。如果递归版本创建了一个它不需要的调用堆栈,那么它是一种空间复杂度较低的不同算法。
-
@SteveJessop:还有一个可能的崩溃错误 :)
标签: algorithm complexity-theory time-complexity