有一组数据,1,3,7,13, …编写函数求该数列第n项元素(第n项=第n-1项+2(n-1) ),主程序中调用该函数,求其前20项之和。
这个问题很基础吧
def fn(n):
if n >1:
return fn(n-1) + 2*(n-1)
else:
return n
sum = 0
for n in range(1,21):
sum += fn(n)
print(sum)
这样做显然比较符合题意
之后我想用lambda函数进行优化,因为这种代码比较简单不需要什么可读性
def fn(n):
if n >1:
return fn(n-1) + 2*(n-1)
else:
return n
print (sum(list(map(lambda x: fn(x), range(1,21)))))
然后这样优化看起来已经优化得不错了,
但是我发现还是比较繁琐
最后思考了一下
fn = lambda n: fn(n-1) + 2*(n-1) if n >1 else n
print (sum(list(map(lambda x: fn(x), range(1,21)))))
两行语句就可以解决的事情,
为什么要用一开始的9行语句