我的想法:
def sum_square(n):
result = 0
if n > 0:
i = iter(n)
for i in n:
result += i * i
return result
elif n <= 0:
raise ValueError("n should be positive")
print(sum_square(4))
但是,终端显示int对象不可迭代。我的回答有什么问题?你可以根据我的想法进行修改吗?
首先,要知道正方形的总和有一个closed form。这里的公式转移到总结为n - 1
。
def sum_square(n):
if n < 0:
raise ValueError('n must be positive')
return n*(n-1)*(2*n-1)//6
实际上,所有的权力都有a known closed form。
你不能在一个整数上调用iter(n)
,你可能意味着range(n)
。
def sum_square(n):
result = 0
if n > 0:
for i in range(n):
result += i * i
return result
elif n <= 0:
raise ValueError("n should be positive")
虽然使用sum
可以简化上述内容。
def sum_square(n):
return sum(x**2 for x in range(n))