[英]Please, could someone find the error in my code?
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);
python 3.6 我需要找到这个: 1! + 2! + ... + n!
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
factorial(3)
这将返回 6
您正在尝试使用递归函数,这很好,但需要更改参数,在本例中为factorial(n-1)
尝试
In [3]: def factorial(n):
...: if n == 0:
...: return 1
...: return n * factorial(n-1)
...: factorial(3)
...:
Out[3]: 6
鉴于您想有效地计算这个阶乘总和,建立起来比下降更容易。 例如f
是递增阶乘, t
是这些阶乘的总和:
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
注意:您可以使用itertools.accumulate()
来简化:
import itertools as it
import operator as op
def fac_sum(n):
return sum(it.accumulate(range(1, n+1), op.mul))
问题是您使用递归的方式很糟糕。 递归和 while 不是好朋友。
如果您省略 while 并执行
sum = sum + factorial(n-1);
那应该有效
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.