哪位大神帮忙看一下,为什么我的输出结果不对呢

求分数序列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];

}

 

}

}


yn小傻
浏览 1869回答 6
6回答

慕工程3695276

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); }

password3396299

i不能为0,0不能被任何数除

hiberk

根据规律,从第二个数开始,。当前数等于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, 我这边不知道让他如何进行分数运行。所以有点遗憾

FireBind

把8换成20

FireBind

不是int型吧
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java