JAVA 求1/2+2/3+3/5+5/8+8/13+13/21 ... 前20项之和。

public class Fujia {
public static void main(String[] args){
int I = 1;
double A = 1;
double B = 1;
double sum = 0;
while (I <= 10){
sum = sum + A/B;
System.out.println("和为:"+sum);
A = B + A;
sum = sum + B/A;
B = A + B;
I++;
};

System.out.println("和为:"+sum);

}

}
有没有人能为我解释一下,第一次循环的时候SUM是不是不对啊,总感觉不对啊,谁能为我解释一下思路!谢谢
最新回答
月色染红颜

2024-04-25 01:58:14

分析规律:分子为前两个分子之和,分母为前两个分母之和。

 public static void main(String[] args) {
               double sum = 0;
               int n = 1;
               int m = 1;
               int j;
               for(int i=1; i<=20; i++) {
                      sum = sum + m/(double)(m+n);
                      j = m; 
                      m = m+n;
                      n = j;
               }
             System.out.println("sum=" + sum);
          }

输出结果:sum=12.278294788817238。

思慕

2024-04-25 02:08:42

你是1/2开始加的 为什么前面sum = sum + A/B要加个1呢

public static void main(String[] args){
int I = 1;
double A = 1;
double B = 2;
double sum = 0;
while (I <= 20){
sum = sum + A/B;
if (I!=1){
System.out.println("第"+(I-1)+"次相加的和为:"+sum);
}
double temp = B;
B = B + A;
A = temp;
I++;
};
}
改写下半生

2024-04-25 04:13:10

double A = 1;
double B = 2;
sum = sum + A/B;
while (I <= 10){
double temp = B;//先把B的值保存下来
B= A+B;//分母为上一次分子和分母的和
A= temp ;//分子为上一次的分母
sum = sum + A/B;
I++;
};
洗头发的秃子

2024-04-25 00:15:47

double num = 0;//声明和sum
for(double i=1;i<=20;i++){
//20次循环,double类型是因为计算会有小数,int 类型计算回忽略小数
num += (i/(i+1));//记录和sum的值,
//i=1的时候 num = num+(i=1/(i+1=2)) 就是num = 0+(1/2)
}
System.out.println("和为:"+num);//循环完毕输出
熊宝宝

2024-04-25 02:28:02

//题目:求1/2+2/3+3/5+5/8+8/13+13/21 ... 前20项之和。

/*分析题目:可观察题目得知:从第二项开始,每一项分数的分母等于上一项的分子,分子等于
上一项的分子加分母,因为我们先需要定义三个变量,int i = 1,j = 2;double sum=0.0(i为分
母,j为分子,sum为总和);*/
//因此代码如下:
import java.util.Scanner;    
public class fengge{  
public static void main(String[] args ){  
int i = 1,j = 2,temp=0;  //temp为中间变量
double sum = 0.0;
for( int t = 1;t < =20;t++){  //题意为前20项的和,因此t<=20
      System.out.println(j*1.0/i); 
      temp = i;//用temp存储中间变量交换分子和下一项的分母值
      i = j;  
      j += temp; //新的分子值等于上一项分数分母与分子的和
      sum += j*1.0/i;  //求和   
  }
 System.out.println("前20项之和为:"+sum);  //输出和   
 }  
}