对python中良好的递归性能感到惊讶

对python中良好的递归性能感到惊讶,第1张

对python中良好的递归性能感到惊讶

这是因为您

sqrt
每次都要重新计算。此修改的运行速度与递归版本一样快:

def factor_it2(n):    r = []    i = 2    lim = int(math.sqrt(n)+1)    while i < lim:        while not n % i: r.append(i) n //= i        lim = int(math.sqrt(n)+1)        i += 1    if n > 1:        r.append(n)    return r

timeit
给我这些时间:

factor      0.13133816363922143factor_it   0.5705408816539869factor_it2  0.14267319543853973

我认为剩下的微小差异是由于

for … in range(…)
比等效
while
循环更快,因为该
for
循环可以使用生成器,而不必执行大量比较。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5667839.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存