python3练习100题——025

原题链接: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运行的内容要包括函数本身。

感觉这道题让我对递归的思想有了更深入的了解。

posted @ 2018-06-14 10:15  Drifter_y  阅读(538)  评论(0编辑  收藏  举报