原题链接:http://www.runoob.com/python/python-exercise-example25.html
题目:求1+2!+3!+...+20!的和。
我的代码:
s =[] for i in range(1,21): num=1 for n in range(1,i+1): num *=n ls.append(num) print(ls) print(sum(ls))
用了两个循环,其实不好。看到用map的,打算重写一下。
l=range(1,21) def f(x): num=1 for i in range(1,x+1): num*=i return num #不能说yield s=sum(map(f,l)) print(s)
第二天,看到了用两个递归的,学写了一下:
def prod(x): if x==1: return 1 else: return x*prod(x-1) def ad(x): if x==1: return prod(1) else: return prod(x)+ad(x-1) #这一行运行了两个函数,有点想不到
递归就是 有一个出口:类似x==1 return
然后else运行的内容要包括函数本身。
感觉这道题让我对递归的思想有了更深入的了解。