【发布时间】:2019-02-20 10:50:11
【问题描述】:
这是我的代码,我正在尝试计算这个系列:((-1)^n)*n/(n+1) 那 n 从 1 开始到 5,代码无法正常工作,谁能帮忙?
int main(){
int i,n;
double sum1;
for (i=1; i<6; i++)
sum1 += (pow(-1,i))*((i)/(i+1));
cout<<sum1;
return 0;
}
最后的真实答案必须等于-0.6166666666666667 哪个代码无法正确计算它。
我从here 计算了系列。有什么特殊的函数可以求和吗?
【问题讨论】:
-
这行得通吗?
sum1 += (pow(-1.0,i))*(((double)i)/((double)i+1.0));你还需要初始化你的变量,所以double sum1;应该是double sum1 = 0.0; -
i的类型为int。因此,(i)/(i+1)是一个整数除法。您可以通过例如解决此问题(double)(i)/(i+1)强制使用浮点数完成参数(以及整个除法)。 -
你的循环是从 1 开始的,不应该是从 0 开始吗?
-
您的 sum1 在使用前没有初始化!
-
@Blaze:你为什么不发布所有这些作为答案?
标签: c++ integer-division