求分数序列:1⼀2,2⼀3,3⼀5,5⼀8,8⼀13,13⼀21......前20项的和。以下程序错在哪里?

2024-12-23 10:56:39
推荐回答(5个)
回答1:

你的sum是double类型的 n m j是int类型的 你没有转换类型 sum=sum+n/m n/m结果是int类型
你要把n/m转换成double类型 在分子上*1.0 这样n/m 就变成doule类型勒
你是朗沃的学生?
public class Sum {
public static void main(String[] args) {
double sum = 0.0;
int n = 1;
int m = 2;
int j=0;
for(int i=1; i<=20; i++) {
sum = sum + n*1.0/m;
j = n;
n = m;
m = m + j;

}
System.out.println("sum=" + sum);
}
}

回答2:

1/2,2/3,3/5,5/8,8/13,13/21......前20项的和
你第二次的逻辑就乱了
第一次:j=1 n=2 m=3 n/m=2/3
第二次:j=2 n=3 m=5 n/m=3/5 就乱了

public class Sum {
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);
}
}

回答3:

整个思路没有错误,主要是数值转换问题。n/m应该转换为double型。
public class Sum {
public static void main(String[] args) {
double sum = 0;
int n = 1;
int m = 2;
int j;
for(int i=1; i<=20; i++) {
sum = sum + (double)n/m;
j = n;
n = m;
m = m + j;
}
System.out.println("sum=" + sum);
}
}

回答4:

你应该用double类型。int类型之间除法得到的是int

回答5:

得到符点型 的进行运算。
整型 只取整数位,你这些小数全是0

风声水影泪痕

是正解。