分数数列求和(4),

韩璐768 2022-07-24 23:04:15

分数数列求和(4)

描述

有一分数序列:2/1 3/2 5/3 8/5 13/8 21/13……,试编写程序计算此分数序列的前n项之和。

输入

输入正整数n。

输出

输出前n项之和,保留6位小数。

样例

输入

5

输出

8.391667

#include <iostream>
#include<math.h>
#include<iomanip>//保留小数必要头文件
using namespace std;
int main()
{
    double sum=0.0;
    int n,a=2,b=1,t;
    cin>>n;
    for(int i=0; i<n; i++)
    {
        sum=sum+(double)a/b;

        t=a;

        a=a+b;

        b=t;
    }
    cout<<setiosflags(ios::fixed)<<setprecision(6)<<sum<<endl;
}

思路:1.定义分子为a=2,分母位b=1;

            2.后边相加时每一位的规律就是        分子=前一位的分子分母之和;

                                                                      分母=前一位的分子;。。。。。。。。。。以此类推

            3.本题有一个特殊之处就是当 double a=2.0,b=1.0 时进行计算时,输出的前边的数字是没有问题正确的,但是系统提示当n=79时,答案就错

              误了,而前边正确后边有问题说明代码思路没问题,问题出在细节上,这里运用到了int a,b;把a/b强制转换成double型即double(a/b)即可解

              决问题。

*做除法运算时,分子分母都是int类型,要求化成小数形式,这时就需要强制类型转换。要注意的时,当从int转化为double类型时,会提高精度,而从double转化为Int时会降低精度,这是由于int类型占4字节,而double占8字节导致的。

...全文
59 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复 1

思路清晰,描述详细,题目考点解决方案详细,加油!

153

社区成员

发帖
与我相关
我的任务
社区管理员
  • c_university_364
  • 焚冉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧