在C++中,如果你要算阶乘和,你会怎么算?
是这样吗:
int n,ans=1,sum=0;
for(int i=1;i<=n;i++)
{
ans*=i;
sum+=ans;
}
cout<
这样算极度浪费空间,现在有一种新的算法,你要还是不要?
假设n=3,1!+2!+3!=1+1*2+1*2*3 ①,有问题吗,没有问题。
接下来分解①式:原式=1*(2+2*3)=1*[2*(1+3)]。
那么代码就可以写为:
int n,sum=0;
for(int i=n;i>=1;i--)
{
sum+=1;
sum*=i;
}
cout<
希望这个算法能帮到大家。



