#为什么我的代码是求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,输出是多少呢?
看代码逻辑应该是奇数阶乘之和,没毛病啊