为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

yn小傻 2016-05-23 16:31:33
求分数序列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);

}


查看完整回答
1 反对 回复 2016-05-24
?
password3396299

TA贡献2条经验 获得超1个赞

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

查看完整回答
1 反对 回复 2016-05-24
?
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, 我这边不知道让他如何进行分数运行。所以有点遗憾

查看完整回答
1 反对 回复 2016-05-23
?
FireBind

TA贡献13条经验 获得超1个赞

把8换成20


查看完整回答
1 反对 回复 2016-05-23
?
FireBind

TA贡献13条经验 获得超1个赞

不是int型吧

查看完整回答
反对 回复 2016-05-23
  • yn小傻
    yn小傻
    a[i]/a[i-1](需要强制转换成double类型),我这个输出的结果是9.0,结果不对。。。
  • 6 回答
  • 0 关注
  • 1805 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信