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