我想计算总和

时间:2015-03-09 18:53:21

标签: c++ algorithm math sum

我想用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;
}

但是不正确。有人能帮助我吗?

3 个答案:

答案 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;