我想用c ++计算总和,
Sum = 1 + ... +(2n - 1)= n2
我试过
double s = 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.;
}
s += val;
}
但是不正确。有人能帮助我吗?
答案 0 :(得分:1)
试试这个:
long sum = 0;
long val = 1;
int n = 5;
for(int i = 1; i <= n; i++){
val *= (2*i - 1);
if (i % 2 == 0) {
val *= -1;
}
sum += val;
}
return sum;
使用long,因为double是十进制值(不是这种情况)
答案 1 :(得分:1)
您的意思是以下内容吗?
#include <iostream>
int main()
{
while ( true )
{
std::cout << "\nEnter a positive integer number (0-exit): ";
unsigned int n = 0;
std::cin >> n;
if ( !n ) break;
long long int sum = 0;
long long int item = 1;
for ( unsigned int i = 1; i <= n; i++ )
{
item *= 2 * i - 1;
sum += ( i % 2 == 0 ? - item : item );
}
std::cout << "\nSum is equal to " << sum << std::endl;
}
}
程序输出可能看起来像
Enter a positive integer number (0-exit): 10
Sum is equal to -622171082
Enter a positive integer number (0-exit): 0
答案 2 :(得分:0)
当前任务完全更改,您要求的是将1
的奇数加到2n-1
以获取数字n^2=n*n
< / p>
for(i=1; i<2*n; i+=2) sum +=i
或
for(i=1; i<=n; i++) sum += 2*i-1
没有更多,没有更少。
请注意,对于重编辑之前的原始任务,双因子的交替和,Horner-Ruffini方案给出公式
1-1*3+1*3*5-...+-1*3*...*(2n-1) = 1-3*(1-5*(1-7*(1-....*(1-(2n-1))...)))
给出循环
sum = 1;
for(i=n-1; i>0; i--)
sum = 1-(2*i+1)*sum;