有一分数序列:2 / 1,3 / 2,5 / 3,8 / 5,13 / 8,21 / 13 …求出这个数列的前20项之和。
我的思路:
分子为上一轮分子+分母
分母为上一轮分子
将它们赋值即可,无论哪方先赋值,都需要一个中间变量暂存,否则赋的值不是上轮。
#include<stdio.h>
int main()
{
//总数 分子 分母 中间变量
double sum=0, fenzi=2, fenmu=1, tmp;
int i;
for(i=0;i<20;i++) //前若干项
{
sum += fenzi/fenmu; //总数等于分子/分母,然后累加
tmp = fenzi; //中间变量存分子
fenzi += fenmu; //下一轮的分子为本轮的分子+分母
fenmu = tmp; //中间变量赋值给分母,因为分子在上一条代码中只已经改变了
//假如调换位置,中间变量将存分母
}
printf("%lf\n",sum); //单精度有效位数为6~7位,双精度有效位数为15~16位
return 0;
}
运行结果