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))
后面的你应该就知道了