有人使用递归的方法进行求解,我选择使用reduce函数求解。
class Solution:
def Sum_Solution(self, n):
# write code here
def add(x,y):
return x+y
return reduce(add, range(n+1))
reduce函数是对数列中所有的数累积计算,第一个参数是计算方式,第二个参数是数列。
因为题目是求和首先定义一个加法函数。
然后构建一个1到n的数列。使用range函数,但是range(n)是0到n-1。为了到n所以用range(n+1)。第一位0不影响和所以无需处理。
这个函数我看到以后,我马上联想到能不能用这个函数算阶乘。尝试后发现是可行的,先上代码`
def f(x,y):
return x*y
b = reduce(f,range(1,3))
print(b)
这是个算2的阶乘的例子
我发现和求和有个不一样的是range(n+1)的第一位是0,乘法必须把0去掉,所以从1开始到n+1,刚好是1到n。