我又又又又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;
}


 

0.0分

7 人评分

新上线《蓝桥杯辅导》课程,近五年的蓝桥杯省赛与国赛真题都有,从读题开始理解题意、梳理思路、实现代码再提交评测全过程,可有效提升获奖比例甚至进国赛!课程介绍、试听请猛击这里

  评论区

  • «
  • »