gpt4 book ai didi

c++ - 用 C++ 计算总和

转载 作者:太空狗 更新时间:2023-10-29 23:21:26 24 4
gpt4 key购买 nike

我写了下面的代码来对级数 (-1)^i*(i/(i+1)) 求和。但是当我运行它时,对于任何 n 值,我都会得到 -1

有人可以指出我做错了什么吗?提前致谢!

#include <iostream>
using namespace std;

int main()
{
int sum = 0;
int i = 1.0;
int n = 5.0;

for(i=1;i<=n;i++)
sum = (-1)^i*(i/(i+1));

cout << "Sum" <<" = "<< sum << endl;
return 0;
}

最佳答案

问题 #1:C++ ^ 运算符不是数学幂运算符。这是按位异或。

您应该改用 pow()

问题#2:您正在将浮点类型存储为整数类型。所以以下将导致 integer division (truncated division) :

i/(i+1)

问题 #3:你实际上并没有总结任何东西:

sum = ...

应该是:

sum += ...

修改后的代码如下:

double sum = 0;
int i = 1;
int n = 5;

for(i = 1; i <= n; i++)
sum += pow(-1.,(double)i) * ((double)i / (i + 1));

虽然在这种情况下你真的不需要使用pow。一个简单的奇数/偶数测试就可以了。

double sum = 0;
int i = 1;
int n = 5;

for(i = 1; i <= n; i++){
double val = (double)i / (i + 1);
if (i % 2 != 0){
val *= -1.;
}
sum += val;
}

关于c++ - 用 C++ 计算总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9134928/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com