2、编程题 1)有一分数序列:1/2-2/3+3/5-5/8+8/13-13/21...,求出这个数列的前20项之和。

如题所述

菲波纳契数列/*方法一:根据斐波那契数列规律计算*/#include <stdio.h>
#include <conio.h>
double getSum(int num)
{
double sum=0,a1=1,a2=2,a3=3;
int i,n=1;
for(i=0;i<num;i++){
sum+=(n*a1/a2);
n=-n;
a3=a1+a2;
a1=a2;
a2=a3;
}
return sum;
}main()
{
double sum=getSum(20);
printf("%f",sum);
getch();
}/*方法二:先生成数组,后利用数组运算*/#include <stdio.h>
#include <conio.h>
main()
{
float fib[50]={0,1};
float sum=0;
int i;
for(i=2;i<50;i++)
fib[i] = fib[i-1]+fib[i-2];
for(i=2;i<41;i+=2)
sum+=(fib[i]/fib[i+1]-fib[i+1]/fib[i+2]);
printf("%f",sum);
getch();
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-22
double sum(int n){ double s=0,a=1,b=2,c=3; int i,sn=1; for(i=0;i<n;i++){ s=s+a/b*sn; sn=-sn; c=a+b; a=b; b=c; } return s;}
相似回答