我想计算总和

I want to calculate the sum

我想用c++求和,

总和 = 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;
}

但不正确。有人可以帮我吗?

试试这个:

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 用于十进制值(不是这种情况)

你是指下面这样的意思吗?

#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

你现在的完全改变了,任务要求你是将12n-1的奇数相加得到数字n^2=n*n

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;