c ++(for)loop:计算y = n /(n + 1)!

时间:2014-11-15 21:35:59

标签: c++ loops

编写程序以解决以下等式

 Y=1/2!‐2/3!+3/4!‐4/5!+….n/(n+1)!

负号让我感到困惑,也有一个因子征兆! 是否该程序应该具有阶乘,我是否必须从数字中减去数字?

int n,a;
double b=2,y,sum=0;
cin>>n;
for (a=1;a<=n;a++)
{
    y=a/b++;
    sum=sum+y;
}
cout<<y<<endl<<sum;
return 0;

1 个答案:

答案 0 :(得分:0)

在许多数学场景中,&#39; - &#39;或者你所谓的否定符号,也可以作为减法。

您有两种选择:

  1. 取消该值然后添加。
  2. 减去该值。
  3. 按优先顺序,你需要计算分母的阶乘,用分母除以分子,最后从总数中加上或减去

    编辑1:
    另一种解决方案是每次迭代处理两个术语。添加第一个,减去第二个。

    double term1 = 0.0;
    double term2 = 0.0;
    double result = 0.0;
    
    for (...)
    {
      term1 = /*...*/;
      term2 = /*...*/;'
      result = result + term1;
      result = result - term2;
    }
    

    或者您可以使用符号变量并将该项乘以符号变量:

    double sign = 1.0;
    double result = 0.0;
    for (...)
    {
      double term = /* ... */;
      result = result + sign * term;
      sign = sign * -1.0;
    }