Python习题,递归函数!最后一步不会了!

'''------------------------------------------------------

【程序填空17】

题目:阅读以下程序并填空,该程序是求阶乘的累加和。
S=0!+1!+2!+.........+n!


注意:除要求填空的位置之外,请勿改动程序中的其他内容。
------------------------------------------------------'''
def cal(n):
pro=1
#**********SPACE**********
for i in range(n):
#**********SPACE**********
pro=pro*i
return pro

def main():
n=int(input("请输入一个正整型数值n:"))
s=0
#**********SPACE**********
for i in range(0,n+1):
if i!=n:
print("%d! + "%i,end='')
else:
print("%d! = "%i,end='')
#**********SPACE**********
s=?
print(s)

if name == '__main__':
main()

def cal(n):
    pro = 1
    for i in range(1, n+1):
        pro = pro * i
    return pro


if __name__ == '__main__':
    n = int(input("请输入一个正整型数值n:"))
    s = 0
    for i in range(0, n + 1):
        if i != n:
            print("%d! + " % i, end='')
        else:
            print("%d! = " % i, end='')
        s = s + cal(i)
    print(s)

请保持正确的缩进,对于python而言,这很重要。
s = s + cal(i)
cal()函数我觉得有问题。我该改过来了。