【问题标题】:I want to calculate the sum我想计算总和
【发布时间】:2015-03-09 18:53:21
【问题描述】:

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

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

【问题讨论】:

  • 我在你想要的系列中没有看到任何部门。
  • TDD:尝试使用n == 1,然后使用n == 3...
  • for 循环看起来一点也不像数学方程式...
  • @Gabriel 与您在编辑之前在帖子中显示的内容相比完全不同。
  • 完美,谢谢!

标签: c++ algorithm math sum


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

【讨论】:

    【解决方案2】:

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

    #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
    

    【讨论】:

    • @LutzL 这是在编辑之前对原帖的回答。:) 我不知道为什么在我回答后原帖被重写了。
    • 然后我通过检查编辑日志看到了这一点并恢复了我的操作。
    【解决方案3】:

    你目前完全改变的任务是把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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-19
      • 1970-01-01
      • 2014-09-16
      相关资源
      最近更新 更多