【发布时间】:2014-04-22 22:57:44
【问题描述】:
def f(L):
if len(L) < 1 billion:
return L
else:
return f(L[:len(L) // 2]) + f(L[len(L) // 2:])
L 是大小为 n 的列表
我知道如果是单次递归调用,那就是O(logn),但是这里有两次递归调用。
但是当我开始在可视化器上运行它时,它开始表现出更多的 O(n) 运行时间。
在我看来,它应该是 O(logn+logn) = O(2logn) = O(logn)。我说的对吗?
【问题讨论】:
-
L是什么对象? -
这只是一个列表。我会把它放在那里。
-
顺便说一句,使用 memoize 装饰器应该会快一些。
标签: python recursion big-o logarithm