关于#c++#的问题,请各位专家解答!

#为什么我的代码是求1到n的阶乘和而不是奇数阶乘和

// 求1!+3!+5!+.......+n!
#include 
using namespace std;
int main()
{
    int chengji = 1;
    int i = 1;
    int sum = 0;
    int n = 0;
    cout << "请输入阶乘和的最后一位n:" << endl;
    cin >> n;
    for (i = 1; i <= n; i++) {
        chengji *= i;
        if (i % 2 == 1) {
            sum += chengji;
        }
       
    }
    cout << "阶乘和为:" << sum << endl;

    return 0;
}

这个代码没有问题吧,求的确实是奇数的阶乘和啊

算法没问题,就是用int数据类型,只能求到func(13), n=15就溢出了,建议变量使用 long long 数据类型

再用么,可以增加判断 输入整数 n 是否为奇数

该回答引用ChatGPT

你的代码实际上是求从1到n的所有阶乘的和,但只有在i为奇数时才将阶乘加入总和中。如果你想修改代码以仅计算奇数阶乘和,可以在计算阶乘时仅在i为奇数时将其加入总和中,如下所示:


#include <iostream>
using namespace std;

int main()
{
    int sum = 0;
    int n = 0;
    cout << "请输入要计算的奇数阶乘的最后一项n:" << endl;
    cin >> n;

    for (int i = 1; i <= n; i += 2) {
        int chengji = 1;
        for (int j = 1; j <= i; j++) {
            chengji *= j;
        }
        sum += chengji;
    }

    cout << "奇数阶乘和为:" << sum << endl;

    return 0;
}

在这个新代码中,我们首先只迭代奇数i的值,然后在每个循环中计算i的阶乘。最后,我们将计算出的阶乘添加到总和中。

输入10,输出是多少呢?
看代码逻辑应该是奇数阶乘之和,没毛病啊