我又又又又tm把问题复杂化了。。好想捶自己T_T!

看到这个数列上的数字就直接想到斐波那契数列了,就想通过这个求解,其实要是没有想到这个数列,用一般的方法写简洁太多。。

不说了,贴代码吧。。下面是我最先用斐波那契数列写的方法。

#include <stdio.h>

//用迭代计算斐波那契数
long fabonacci(int n)
{
    long result;
    long pre_result;
    long pre_pre_result;

    result = pre_result = 1;

    while (n > 2)
    {
        n -= 1;
        pre_pre_result = pre_result;
        pre_result = result;
        result = pre_result + pre_pre_result;
    }
    
    return result;
}

int main()
{
    int N;
    scanf("%d", &N);

    double an;
    double sum = 0.00;
    
    double fenzi;
    double fenmu;
    
    int i;
    for (i = 0; i < N; i++)
    {
        fenzi = (double)fabonacci(i + 3);
        fenmu = (double)fabonacci(i + 2);
        an = fenzi/fenmu;
        sum += an;
    }
    printf("%.2lf\n", sum);

    return 0;
}

通过了之后我就看了一些其他的解决方法,心里顿时就想骂自己...


好方法如下,参考其他同学的:

由题意可知后一项的分子等于前一项分子加分母,后一项的分母为前一项的分子。

#include <stdio.h>

int main()
{
    int N;
    scanf("%d", &N);

    double fenzi = 2;
    double fenmu = 1;

    double sum = 0.00;
    double tmp; 
    while(N > 0)
    {
        sum = sum + fenzi / fenmu;
        tmp = fenzi;
        fenzi = fenmu + fenzi;
        fenmu = tmp;
        N--;
    }

    printf("%.2lf\n",sum);

    return 0;
}


点赞(4)
 

0.0分

5 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论