Python 请问,有人能在我的代码中找到错误吗?

Python 请问,有人能在我的代码中找到错误吗?,python,Python,python 3.6 我需要找到这个:1!+2! + ... + n def factorial(n): sum = 0; if (n==0 or n==1): return 1 else: While(n!=0) sum = sum + factorial(n); n = n - 1; return sum factorial(3); 这将返回6 您正在尝试使用递

python 3.6 我需要找到这个:1!+2! + ... + n

def factorial(n):
    sum = 0;
    if (n==0 or n==1):
        return 1
    else:
        While(n!=0)
            sum = sum + factorial(n);
            n = n - 1;
            return sum

factorial(3);
这将返回6

您正在尝试使用递归函数,这很好,但需要更改参数,在本例中,请尝试使用
阶乘(n-1)

def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n-1)
factorial(3)

如果您想要有效地计算这个阶乘和,那么建立比下降更容易。例如,
f
是递增的阶乘,
t
是这些阶乘的总和:

In [3]: def factorial(n):
   ...:     if n == 0:
   ...:         return 1
   ...:     return n * factorial(n-1)
   ...: factorial(3)
   ...:
Out[3]: 6
注意:您可以使用来简化:

def fac_sum(n):
    t, f = 0, 1
    for x in range(1, n+1):
        f *= x
        t += f
    return t

In []:
fac_sum(3)

Out[]:
9

问题是您使用递归的方式不好。 递归和while不是好朋友

如果你省略了while并做了

import itertools as it
import operator as op

def fac_sum(n):
    return sum(it.accumulate(range(1, n+1), op.mul))

这应该行得通

欢迎来到StackOverflow!你能详细说明一下你的代码是怎么写的吗?你在期待什么,到底发生了什么?如果您遇到异常/错误,请发布发生该异常/错误的行以及异常/错误详细信息。请输入这些详细信息,否则我们可能无法提供帮助。嗨,欢迎来到StackOverflow!请提供错误描述、您正在使用的Python版本以及您试图实现的总体目标。这有助于我们帮助您:)While(n!=0)->While(n!=0):不需要
请注意阶乘使用乘法,而不是加法(请参阅)
        sum = sum + factorial(n-1);