输出前n个自然数阶乘之和

Python,求前n个自然数阶乘之和,输入一个乘整数6,和等于873

import math
a=0
n = int(input())
for i in range(1,n+1):
  a+=math.factorial(i)
print(a)

用两个for循环来遍历,第一个for循环遍历1到n之间所有的数,第二for循环遍历1到当前数之间所有的数,以求当前数的阶乘,然后把所有的数阶乘累加到和中,最后打印这个和即可。

代码如下:

n=int(input("请输入一个自然数:"))

sum=0  # 存储n个自然数阶乘的和
for i in range(1,n+1):  # 遍历 1到n 之间的每一个数

    single=1  # 存储当前自然数的阶乘,初始为1
    for j in range(1,i+1): # 遍历1到当前自然数 i之间的每一个数,
        single*=j  # 把每一个数累乘,以求当前数的阶乘

    sum+= single  # 累加每个数的阶乘,以求得1到n之间所有数的阶乘之和

# 打印结果
print(sum)

img

思路:计算每个数的阶乘,再把和相加;
下面代码是c++实现的,两种方法


int CalculateFactorial(int n)
{
    auto sum=0;
    for(auto i=1;i<=n;i++)
    {
        auto Fa=1;
        for(auto j=1;j<=i;j++)//每个数的阶乘
        {
            Fa*=j;
        }
        sum+=Fa;//阶乘之和
    }
    return sum;
}
//递归法
int Calculate(int n)
{  
    if (n <= 0) return 0;
    auto Fa = 1;
    for (auto j = 1; j <= n; j++)//每个数的阶乘
    {
        Fa *= j;
    }
    return Fa+Calculate(--n);
}