请,有人可以在我的代码中找到错误吗?

时间:2018-10-17 16:30:02

标签: python

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!

4 个答案:

答案 0 :(得分:0)

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

这将返回6

您尝试使用递归函数,这很好,但是需要更改参数,在这种情况下,factorial(n-1)

答案 1 :(得分:0)

尝试

Runtime.getRuntime().exec("powershell.exe -File d:\\my-script.ps1")

答案 2 :(得分:0)

如果要有效地计算此阶乘和,建立起来比下降要容易。例如。 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 是这些阶乘的总数:

import itertools as it
import operator as op

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

注意:您可以使用itertools.accumulate()进行简化:

Qt::Horizontal

答案 3 :(得分:0)

问题是您使用递归的方式不好。 递归,虽然不是好朋友。

如果省略一会而做

        sum = sum + factorial(n-1);

应该可以