Problem X: 计算数列和2/1,3/2,5/3,8/5…
Description
有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13,…… 计算这个数列的前n项和。注意:C语言中整数/整数的结果为整数;需要用(float)强制转换为实型或乘以1.0后进行计算。
Input
输入一个正整数n。
Output
输出数列的前n项和(保留两位小数),输出格式可为:printf(“s=%.2f\n”,…);。
Sample Input
10
15
20
Sample Output
s=16.48
s=24.57
s=32.66
#include<stdio.h>
int main(){
int a1[100],a2[100],n;
float sum=0;
a1[0]=2;
a1[1]=3;
a2[0]=1;
a2[1]=2;
for(int i=2;i<100;i++){
a1[i]=a1[i-1]+a1[i-2];//斐波那契数列(Fibonacci sequence)
a2[i]=a2[i-1]+a2[i-2];
}
scanf("%d",&n);
for(int i=0;i<n;i++){
sum=sum+(float)a1[i]/a2[i];
}
printf("s=%.2f\n",sum);
}
此问题的难点在于斐波那契数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……
除了第一和第二两个数字外,其余数字均是前两项之和,故可以首先设置两个数列来分别表示分子和分母。
此题解决方法多样,合适就好。