求分数序列2/1,3/2,5/3,8/5,13/8,21/13求出这个序列的前20项之和class TestArray0{ public static void main(String[] args){ int[] a=new int[21]; SumAdd(a); double sum=0.0; double b=0.0; int j; for( j=0;j<8;j++){ b=a[j+1]/a[j]; //sum+=b; } System.out.println(b); } public static void SumAdd(int[] a){ a[0]=1; a[1]=2; int i; for( i=2;i<=20;i++){ a[i]=a[i-1]+a[i-2]; } }}
6 回答
慕工程3695276
TA贡献1条经验 获得超1个赞
public static void main(String[] args) {
int j=2,k=1,temp; //temp用于下方交换,j为分子,k为分母
double sum=0.0;
for(int i=1;i<=20;i++){
sum=sum+(double)j/k;
//发现规律为后者的分子等于前2者的分子相加,后者的分母等于前者的分子,所以用交换方法
temp=j;
j=j+k;
k=temp;
}
System.out.println(sum);
}
hiberk
TA贡献6条经验 获得超3个赞
根据规律,从第二个数开始,。当前数等于1加上它前一个数的倒数。所以把第一个数抽出来。
public int count(){
double sum=0;// 定义一个计算和值的变量
double[] count=new double[20]; //定义一个长度为20的数组存放前20项的值
count[0]=2/1; //将第一项抽出来单独赋值
for(int i=1;i<20;i++){
count[i]=1+ 1/count[i-1]; //当前项的值等于1加上 前一项的倒数,用递归的方法求值
sum+=count[0]; //求前20项的值
}
//这个方法 没有进行分数优化,就是数据类型会自动转成double, 我这边不知道让他如何进行分数运行。所以有点遗憾
添加回答
举报
0/150
提交
取消