c语言 分子分母皆为斐波那契的数列的求和

发布网友 发布时间:2022-04-22 19:57

我来回答

2个回答

热心网友 时间:2023-11-18 01:28

最近正在备考计算机二级C语言,所以对这种累加求和的问题,很是熟悉,可以看出分子是斐波那契数列,后一项的分子是前一项的分母(先不看x),奇数项是除以x,偶数项是乘以x,然后正负号交替,以下是我花了10分钟的时间写出的程序,运行结果正确,x=6.66,n=8时,sum=-16.492143,   x=6.66,n=15时,sum=-28.469447

#include<stdio.h>
double fun(double x,int n)
{
    double a = 1,b = 2,t;
    int i;
    double m,sum;
    sum = 1/(2*x);
    for(i = 0; i<n-1; i++ )
    {
        t = b;
        b = a + b;
        a = t;
        m = a / b;
        if(i % 2 == 0) sum = sum + (-1) * m * x;
        if(i % 2 != 0) sum = sum + m / x;        
    }
    return sum;
}
main()
{
    int n;
    float x;
    printf("Please Enter x And n:\n");
    scanf("%f %d",&x,&n);
    printf("x = %f, n = %d\n",x,n);
    printf("The result is :\n");
    printf("%f\n",fun(x,n));
}追问循环次数不太懂

热心网友 时间:2023-11-18 01:28

C的语法忘得差不多了  只能跟你说下思路。先从分子看起 1 2 3 5 8  ,从第三项开始 每项都是前两项之和、分母也是一样。然后加减顺序是加一次减一次。x是输入的已知值。这个问题就是求分子分母。分子分母其实是菲波拉契数列(0,1,1,2,3,5,8,13----)。:

int Func(int n)
{
    if(n>=1&&n<==2)
        return 1;
    else if(n<1)
        return 0;
    return Func(n-1)+Func(n-2);
}

第一个分数就是Func(2)/(x*Func(3))

后面的你应该就知道了

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com