计算N = 1/n*n-1 + 1/(n-1)(n-1)-1 + ...... + 1 / 2*2-1的C++实现

float s1(float N1)                   //从大到小的计算顺序函数
{
    float i,sum1 = 0;
    for (i = 2 ;i <= N1 ; i++)
    {
        sum1 += 1.0 / (i * i - 1);
    }
    return sum1;                      //函数返回值
}

float s2(float N2)                   //从小到大的计算顺序函数
{
    float i,sum2 = 0;
    for (i = N2;i >= 2; i--)
    {
        sum2 += 1.0 / (i * i - 1);
    }
    return sum2;                       //函数返回值
}
int main()
{
    cout << "请输入一个数:" << endl;
    float n;
    cin >> n;
    cout << "从大到小顺序输出的结果是:" << s1(n) <<"\n"          //输出计算从大到小的结果
        << "从小到大顺序输出的结果是:"<<s2(n) << endl;           //输出计算从小到大的结果
    return 0;                                                                  //程序结束

输出结果可以看到从大到小计算和从小到大计算结果的计算精度不一样,是因为计算机在计算时,从大数到小数计算的过程中会“吞并”小数,计算精度会有所下降,因此在精密计算过程中需要选用合适的计算顺序和算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值