def iterative(n):
return sum(i * (i + 1) ** 2 for i in range(1, n + 1))
print(iterative(10))
对所有答案进行了效率测试:
def iterative1(n):
return sum(i * (i + 1) ** 2 for i in range(1, n + 1))
def iterative2(n):
sum = 0
for i in range(1, n + 1):
form = i * (i + 1) ** 2
sum = sum + form
return (sum)
def iterative3(n):
return sum(map(lambda i: i*(i+1)**2, range(1,n+1)))
import time
x = time.time()
print(iterative1(10000000))
print( time.time() - x) # 5.313434600830078
x = time.time()
print(iterative2(10000000))
print(time.time() - x) # 5.021821975708008
x = time.time()
print(iterative3(10000000))
print(time.time() - x) # 5.61063551902771
如果你真的在寻找速度,你可以只做数学运算,从中去掉迭代方面。多项式的和可以分解成和的和,那些小和可以用这样的方法直接求解(如果数字很大,请注意浮点精度):
例如,这里的计算速度快了几个数量级—您可以用n=10000000计算值,大约15000次,而迭代方法只需一次:
如果你是说更短,那么:
对所有答案进行了效率测试:
看起来你的是最快的(但在我看来可读性较差)
相关问题 更多 >
编程相关推荐