本文来源于粉丝私信的问题,目的在于计算result = 1!+2!+3!+...+n!,因为代码比较简单,没加注释,有问题可以留言交流。文中给出了2段代码,在实际使用时应优先考虑使用第一段,第二段仅用来验证,涉及大量重复计算,效率极低。
def factorialBefore(n): result, t = 1, 1 for i in range(2, n+1): t *= i result += t return result
def verify(n): from math import factorial result = 0 for i in range(1, n+1): result += factorial(i) return result
from random import randrange for i in range(10000): n = randrange(1, 1000) if factorialBefore(n) != verify(n): print(n, 'error')
运行结果:无输出,表示两段代码计算结果一致。