Java 第一个k系列1和x2B之和的递归;(1/2)-(1/3)和#x2B;(1/4)…(1/k)

Java 第一个k系列1和x2B之和的递归;(1/2)-(1/3)和#x2B;(1/4)…(1/k),java,Java,我正在尝试编写一个递归方法,该方法不包含整数参数k,而是返回序列的前k项之和的两倍,例如:1+(1/2)-(1/3)+(1/4)…(1/k)。我已经写了几个递归方法,但这一个让我难堪。我的方法设置正确吗?我的主要问题是我不知道我应该在**sumHelper方法中创建哪些变量以及如何操作它们。请帮忙!这将是非常重要的 public static double sum (int k){ if(k == 0) return 0; if(k == 1) return 1 + (1.0/2

我正在尝试编写一个递归方法,该方法不包含整数参数k,而是返回序列的前k项之和的两倍,例如:1+(1/2)-(1/3)+(1/4)…(1/k)。我已经写了几个递归方法,但这一个让我难堪。我的方法设置正确吗?我的主要问题是我不知道我应该在**sumHelper方法中创建哪些变量以及如何操作它们。请帮忙!这将是非常重要的

public static double sum (int k){
    if(k == 0) return 0;
    if(k == 1) return 1 + (1.0/2);      

    double total = 1 + sumHelper(k);
    return total; 

}

public static double sumHelper(int k) {
    if (k == 2) return 1.0/k;


    return ; ????

也许是这样的

public static double sum(int k) {
    if (k <= 0) return 0;
    if (k == 1) return 1;
    if (k % 2 == 0)
        return 1.0/k + sum(k-1);
    else
        return -1.0/k + sum(k-1);
}
公共静态双和(int k){

如果(k你真的不需要助手

使用k的值查看它是a+还是a-

如果偶数是a+,如果奇数则是-

异常是k==1(因为它是奇数,我们正在添加

public static double sum(int k){
    if (k<=1) return (double) k;
    return ((k%2==0)? 1 : -1)*(1/(double)k) + sum(k-1);
}

你把它复杂化了:

public double sum(int k)
{
    if(k==1)
       return 1;
    return (k%2==0>1:-1)*1.0/k + sum(k-1);
}

仅供参考,你的意思是“接受”而不是“例外”,非常感谢!非常有帮助!
sum(4) -> 1/4 + sum(3)
sum(3) -> -1/3 + sum(2)
sum(2) -> 1/2 + sum(1)
sum(1) = 1

==>
sum(4) = 1 + 1/2 - 1/3 + 1/4
public double sum(int k)
{
    if(k==1)
       return 1;
    return (k%2==0>1:-1)*1.0/k + sum(k-1);
}