我一直在阅读关于关键字yield
和生成器在Python中,我想知道如果我已经理解它正确的时间复杂性条款。蟒蛇发电机时间复杂性混乱
这里是我的生成函数来获取因素:
def calc_factors(n):
for k in range(0, n+1): # this is the second "for" loop
if n % k == 0:
yield k
,我会调用这个发生器功能:
>>> for factor in calc_factor(100): # this is the first "for" loop
print factor
现在,我的理解是,这有时间复杂度O(N^2),因为它有两个循环,但我不相信。请在这方面给我启发。 在此先感谢!
你不能只计算你的程序中的循环,并坚持计数旁边的n ^。时间复杂性不会那样工作。 – user2357112
虽然在语法上,您有两个循环,生成器中的循环只有一个迭代执行循环的生成器外的每个迭代。花费的时间总量与n成正比,而不是n^2。 – user2357112
@ user2357112:感谢您的评论。我很困惑,因为它看起来像第一个for循环执行,然后它会调用生成器函数,但然后生成器函数有另一个for循环让我这么想。我同意计算'for'循环是不正确的方法来判断时间复杂度。 –