有一个分数序列:2/1 , 3/2 , 5/3 , 8/5 , 13/8 , 21/13 ...求出这个数列的前20项之和
特点:
前一项的分子为后一项的分母,前一项的分子、分母之和为后一项的分子
下面给出两种做法:
#include <stdio.h>
#define n 20 //求解项数
int main()
{
int i;//循环变量
double a=2,b=1;//a,b分别为某项的分子、分母
double sum=0;
double temp;//临时变量
for (i=1;i<=n;i++)
{
sum+=a/b;
temp=a;//记录前一项分子
a=a+b;//前一项分子与分母之和为后一项分子
b=temp;//前一项分子为后一项分母
}
printf("前%d项之和为:sum=%9.7f\n",n,sum);
return 0;
}
测试结果:
下面再给出用数组存储办法,代码如下:
#include<stdio.h>
#define n 20 //求解项数
int main()
{
double sum=0;
int s1[20]={2,3};//存储分子
int s2[20]={1,2};//存储分母
int i;
for(i=0;i<18;i++)
{
s1[i+2]=s1[i]+s1[i+1];
s2[i+2]=s2[i]+s2[i+1];
}
for(i=0;i<n;i++)
sum+=1.0*s1[i]/s2[i];
printf("前%d项之和为:sum=%9.7f\n",n,sum);
return 0;
}
测试结果: