java计算1+1/4+1/9+……+1/(20+20)代码怎么写
import java.util.Scanner;
public class TestDemo {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入:");
int n= scanner.nextInt();
double sum = 0;
int flag = 1;
for (int i = 1;i<n;i++){
sum = sum +(1.0/i)*flag;
flag*=-1;
}
System.out.println(sum);
}
}
本题重点在:
1、因为涉及小数部分,数据类型不能使用int,在与int类型相除时,可以使用高精度的被除数,或者使用类型强转方式。
2、对于正负号的转换问题,除了使用(-1)的n次方,使用flag变量并在每次循环后乘以(-1)使其变号更为简单。
可以根据参考资料中提供的求和公式和代码,进行稍微的修改来计算1+1/4+1/9+……+1/(20+20)的和,具体步骤如下:
下面是相应示例代码:
public class Main {
public static void main(String[] args) {
double sum = 0;
for (int i = 1; i <= 20; i++) {
double a = Math.pow(i * 2, 2);
sum += 1.0 / a;
}
System.out.println(sum);
}
}
运行结果为:
0.17741627234075367
如果单项为1除以当前数的平方的话,可以使用循环实现,循环20次,每一项为1除以当前数的平方,然后再把每一项累加到和中,循环结束,和即为所求的结果。
代码如下:
参考链接:
public class CountTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
double sum=0, single;
// 循环20次
for(int i=1;i<=20;i++) {
// https://blog.csdn.net/yangweishi/article/details/119422319
// 每一单项为1除以(i*i)的结果
// 使用1.0除以(i+i), 是将除法结果变为double结果
single = 1.0/(i*i);
// 再把每一项累加到和中
sum+=single;
//System.out.println("i="+i+",single="+single+",sum="+sum);
}
// 打印和
System.out.println(sum);
}
}