有一个分数序列:2/1, 3/2, 5/3, 8/5, 13/8, …编写程序求出这个序列的前n项之和。输入只有一个正整数n,1≤n≤10,输出该序列前n项和,结果保留小数后6位。
样例输入
3
样例输出
5.166667
#include<stdio.h>
int main()
{
int n,i;
double m=0;
double f1=1,f2=1,f3;
scanf("%d",&n);
for(i=0;i<n;i++)
{
f3=f1+f2;
f1=f2;
f2=f3;
m+=f2/f1;
}
printf("%f",m);
return 0;
}
原题是斐波那契数列(1,1,2,3,5,13…)的变式,只需表达出斐波那契数列(前两项之和等于后一项),再累加分式即可。