编写一个方法,用来计算并输出:1-1/2+1/3-1/4+...+(-1)^(n-1) *1/n,其中n是用户输入的正整数。


import java.util.Scanner;

public class Test07 {
    
    static int He(int n) {
        int sum=0;
        int x=0,y=0,a;//x为奇数和,y为偶数和
        if(n%2==1) {//1/1+1/3+1/5+..1/n+(-1)*(1/2+1/4+1/6+..1/n-1)
           for(a=1;a<=n;a+=2) {//a为分母
              int z = 1/a;
              x += z;
           }
           
           for(a=2;a<=n-1;a+=2) {
               int c = 1/a;
               y = (-1)*(y+c);
           }
           sum=x+y;
    }
         else if(n%2==0) {//1/1+1/3+1/5+..1/n-1+-1*(1/2+1/4+1/6+..1/n)
            for(a=1;a<=n-1;a+=2) {//a为分母
               int z = 1/a;
               x += z;
            }
            for(a=2;a<=n;a+=2) {
               int c = 1/a;
               y = (-1)*(y+c);
             }
             sum=x+y;
    }    
        return sum;
}

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc =new Scanner(System.in);
        System.out.println("输入:");
        int x=sc.nextInt();
        System.out.println(He(x));

    }

}

我的思路:
1,递归:从N直到1。
2,若当前为偶数,则减。奇数加。

实现中。。。实现完成!

拆成1+1/3+1/5+1/7 和-1/2-1/4-1/6,总结成两个公式,然后带入公式计算,效率比递归高

import java.util.Scanner;

public class Test07 {

static double He(int n) {
    double sum=0;
    double x=0,y=0;//x为奇数和,y为偶数和
    double a;
    if(n%2==1) {//1/1+1/3+1/5+..1/n+(-1)*(1/2+1/4+1/6+..1/n-1)
       for(a=1;a<=n;a+=2) {//a为分母
          double z = 1/a;
          x += z;
       }
       
       for(a=2;a<=n-1;a+=2) {
           double c = 1/a;
           y = (-1)*(y+c);
       }
       sum=x+y;
}
     else if(n%2==0) {//1/1+1/3+1/5+..1/n-1+-1*(1/2+1/4+1/6+..1/n)
        for(a=1;a<=n-1;a+=2) {//a为分母
           double z = 1/a;
           x += z;
        }
        for(a=2;a<=n;a+=2) {
           double c = 1/a;
           y = (-1)*(y+c);
         }
         sum=x+y;
}    
    return sum;

}

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner sc =new Scanner(System.in);
    System.out.println("输入:");
    int x=sc.nextInt();
    System.out.println(He(x));

}

}