我想在javascript中总结给定的阶乘数字
'1! + 2! + 3! + ... + n!'
答案 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;
}