Python - 阶乘的总和

时间:2015-02-25 19:07:08

标签: python algorithm

B=0
A=1
m=int(input("input a number please "))
for k in range (1,m+1) :
    for i in range (1,k+1) :
    A=i*A
    B=B+A
print("this is your number",B)

如果我输入4,这给了我418,它应该给我32,我在这里做错了什么?

我已经尝试了一切来纠正它

编辑:这是计算阶乘的总和,如果我输入4,它将计算1! + 2! + 3! + 4!

3 个答案:

答案 0 :(得分:1)

您忘记在i循环之前将A重置为1。正确答案应该是:

B=0
A=1
m=int(input("input a number please "))
for k in range (1,m+1):
    A=1
    for i in range (1,k+1):
        A=i*A
    B=B+A
print("this is your number",B)

答案 1 :(得分:1)

解决方案1 ​​

您可以使用:

math.factorial(x)

使用0初始化一个总和,使用for循环并将上面一行的结果添加到总和中:

from math import factorial
s=0
m=4
for k in range (1,m+1) :
    s=s+factorial(k)
print (s)

解决方案2

手动:

s=0
m=4
for i in range(1,m+1):
    p=1
    for k in range(1,i+1):
        p*=k
    s+=p
print (s)

答案 2 :(得分:0)

或者您可以尝试:

partial_sum = 0
current_factorial = 1
for i in range(1, int(input()) + 1):
  current_factorial *= i
  partial_sum += current_factorial
print(partial_sum)