javascript中的因子数的总和

时间:2016-06-03 04:18:25

标签: javascript numbers factorial

我想在javascript中总结给定的阶乘数字

'1! + 2! + 3! + ... + n!'

2 个答案:

答案 0 :(得分:0)

您可以使用阶乘函数: 迭代函数:

function sFact(num)
{
    var rval=1;
    for (var i = 2; i <= num; i++)
        rval = rval * i;
    return rval;
}

递归

function rFact(num)
{
    if (num === 0)
      { return 1; }
    else
      { return num * rFact( num - 1 ); }
}

我从this链接复制了这些功能。  现在你能做什么。

假设n值为6.

  var n = 6;
    var sum = 0;
    for(var i=1;i<=n;i++)
    {
       sum = sum + rFact(i);//Here you can use one of factorial funciton. I am using recursive function
    }

document.print("The answer is "+ sum );

答案 1 :(得分:0)

天真的解决方案是实际计算每个因子并将它们加在一起,其复杂度为O( n ²)。但是,如果你聪明,你可以设计一个算法,解决复杂的O( n )相同的问题。请查看以下示例的模式,该示例计算1到4的阶乘之和。

1!+2!+3!+4! =
1+1*2+1*2*3+1*2*3*4

请注意您是如何多次重复使用先前计算的结果的?这可以利用。您可以使用类似的程序计算所有阶乘的总和,直到 n

function sumFactorials(n) {
    var sum = 0;
    var prod = 1;
    for(var i=1; i<=n; i++) {
        prod *= i;
        sum += prod;
    }
    return sum;
}