编写函数fun,函数的功能是:求一分数序列 2/1,3/2,5/3,8/5,13/8,21/13…的前n项 之和。C语言中

编写函数fun,函数的功能是:求一分数序列
2/1,3/2,5/3,8/5,13/8,21/13…的前n项
之和。

每一分数的分母是前两项的分母之和
每一分数的分子是前两项的分子之和

例如:求前20项之和的值为32.660259。

--------------------------------------------------
注意:部分源程序给出如下。请勿改动主函数main和其
它函数中的任何内容,仅在函数fun的花括号中填
入所编写的若干语句。
------------------------------------------------*/
#include "stdio.h"

float fun(int n)
{
/**********Program**********/
/************End************/
}
main()………………………………………………

第1个回答  2011-11-29
float suma(int n){
float ft =0;
int i,at,bt;
int a1=2,b1=1,a2=3,b2=2;
if(n <2){
printf("输入数小于2!");
return ft;
}
for(i=2;i<=n;i++){
ft = a1/b1 + a2/b2;
at = a1 + a2;
bt = b1 + b2;
a1 = a2;
b1 = b2;
a2 = at;
b2 = bt;
}
return ft;
}
第2个回答  2011-11-29
float fun(int n)
{
if(n==1)
return 2.00;
else if(n<1)
return 0.00;
else
{
float *a=new float[n];
float b=0.0;
a[0]=1.00;
a[1]=2.00;
for(int i=2;i<=n;i++)
{
a[i]=a[i-2]+a[i-1];
b=b+a[i]/a[i-1];
}
return b;
}

}
第3个回答  2011-11-29
float fun(int n)
{
float ans=2/1;
int num[2]={1,2};
while(--n)
{
num[1]+=num[0];
num[0] =num[1]-num[0];
ans+=float(num[1])/num[0];
}

return ans;
}
第4个回答  2011-11-29
float fun(int n)
{
int a[30];
float sum=2/1;
a[0]=2;
a[1]=3;
for(int i=2;i<n+1;i++)
{
a[i]=a[i-1]+a[i-2];
sum+=(float)a[i]/a[i-1];
}
return sum;

}追问

float i;double a = 1, b = 2, x = 2, y = 3, sum;sum = x / a + y / b;for (i = 0; i < (n/2-1); i++){a += b; b += a; x += y; y += x;sum += x / a + y / b; }return sum;这个也可以

本回答被提问者采纳