python编程问题

要求将求阶乘定义为函数(使用两种方案实现),主程序中分别调用两个函数实现计算,最后输出对比结果。
(1)函数fact1用循环实现求阶乘。
(2)函数fact2用递归实现求阶乘。

img

第一问不是很清楚,第二问我自己试了一下代码,感觉不太对,有没有人能帮一下忙?

img

给个例子参考:

def fact1(n):
    sum = 0
    print('用循环求阶乘的计算结果:')
    for i in range(1, n+1):
        m = 1
        for j in range(1,i+1):
            m = m*j
        sum  = sum+m
        if i<n:
            print(f'{i}!', end=' +')
        else:
            print(f'{i}!的值为{sum}')

def fact2(n,n1,sum):
    if n==1:
        print('用递归求阶乘的计算结果:')
        for i in range(1,n1):
            print(f'{i}!', end=' +')
        print(f'{n1}!的值为{sum+1}')
    else:
        m = 1
        for j in range(1,n+1):
            m = m*j
        sum += m
        fact2(n-1,n1,sum)


n = int(input('请输入一个正整数'))
fact1(n)
fact2(n,n,0)

img


def fact(n):
    su = 0
    for i in range(1,n+1):
        a = 1
        b = 1
        while a<=i:
            b*=a
            a+=1
        su += b
    print(su)

c = []
def f(x):
    a = 1
    b = 1
    global c
    if x == 0:
        return sum(c)
    while a<=x:
        b*=a
        a+=1
    c.append(b)
    return f(x-1)
fact(6)
print(f(6))