Python 请问,有人能在我的代码中找到错误吗?
python 3.6 我需要找到这个:1!+2! + ... + nPython 请问,有人能在我的代码中找到错误吗?,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 您正在尝试使用递
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);