求分数序列:1/2,2/3,3/5,5/8,8/13,13/21......前20项的和。以下程序错在哪里?
答案:6 悬赏:40 手机版
解决时间 2021-02-05 03:30
- 提问者网友:爱唱彩虹
- 2021-02-04 19:12
求分数序列:1/2,2/3,3/5,5/8,8/13,13/21......前20项的和。以下程序错在哪里?
最佳答案
- 五星知识达人网友:十年萤火照君眠
- 2021-02-04 20:40
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);
}
}追问谢谢,确实是得强制转换一下,另外 逻辑没有问题吧?第二次:j = 2 , n = 3, m = 5, n/m = 3/5
第三次:j = 3, n = 5, m = 8, n/m = 5/8.....追答第二次的应该是2/3
你第二次的逻辑就乱了
第一次: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);
}
}追问谢谢,确实是得强制转换一下,另外 逻辑没有问题吧?第二次:j = 2 , n = 3, m = 5, n/m = 3/5
第三次:j = 3, n = 5, m = 8, n/m = 5/8.....追答第二次的应该是2/3
全部回答
- 1楼网友:夜余生
- 2021-02-05 00:36
楼上是正解
你执行一下这句话就明白了:
System.out.println(10/11);
你执行一下这句话就明白了:
System.out.println(10/11);
- 2楼网友:洎扰庸人
- 2021-02-05 00:11
你应该用double类型。int类型之间除法得到的是int
- 3楼网友:雾月
- 2021-02-04 22:54
你的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);
}
}
你要把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);
}
}
- 4楼网友:蓝房子
- 2021-02-04 22:22
得到符点型 的进行运算。
整型 只取整数位,你这些小数全是0
风声水影泪痕
是正解。
整型 只取整数位,你这些小数全是0
风声水影泪痕
是正解。
- 5楼网友:像个废品
- 2021-02-04 22:08
整个思路没有错误,主要是数值转换问题。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);
}
}
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);
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯