Bootstrap

C语言求解“斐波那契分数序列”前20项之和的两种方法

【问题描述】有一个分数序列:2/1,3/2,5/3,8/5,13/8,21/13,······,编程求这个序列的前20项之和。

方法一:

注意无论分子或者分子,都符合前两项之和等于第三项,这样我们就可以定义6个变量各自来表示分子和分母。如下图:

每一个循环都执行:mol1=mol2;mol2=mol3;mol3=mol1+mol2;这样就可以依次向后”平移一个单位“,知道前两项,就能表示出后面的项了。以上是分母子的操作,分母也是同样的操作。此外还需要定义一个变量sum来存储每次相加的和。具体代码如下:

#include<stdio.h>
int main()
{
	float mol1=2.0,mol2=3.0,mol3=5.0;
	int den1=1,den2=2,den3=3;
	int i=0;
	double sum=(2.0/1)+(3.0/2);//将前两项的和赋值给sum 
	for(i=0;i<18;i++)//只要循环18次,前两项的和已经赋值给sum 
	{
		mol1=mol2;
		mol2=mol3;
		mol3=mol1+mol2;
		den1=den2;
		den2=den3;
		den3=den1+den2;
		sum+=(mol3/den3);
	}
	printf("前20项之和为%lf",sum);
	return 0;
 } 

方法二:

注意观察各项分子分母之间的关系:

代码如下:

#include<stdio.h>
int main()
{
	double mol=2.0,den=1.0,sum=0.0;
	int i;
	for(i=0;i<20;i++)
	{
		sum+=mol/den;
		mol=mol+den;
		den=mol-den;
	}
	printf("前20项的和为%lf",sum);
	return 0;
 } 

;