public static double sum(double [] a, int low, int high) throws Exception{
if(low > high){
throw new IllegalArgumentException();
}
else if(low == high){
return a[low];
}
return sum(a, low, high/2) + sum(a, high/2, high);
}
public class ArraySum {
int low;
int high;
double []list;
public ArraySum(int lowIn, int highIn, double []listIn){
low = lowIn;
high = highIn;
list = listIn;
}
public double auxSum() throws Exception{
return sum(list, low, high);
}
public static double sum(double [] a, int low, int high) throws Exception{
if(low > high){
throw new IllegalArgumentException();
}
else if(low == high){
return a[low];
}
return sum(a, low, (high+low)/2) + sum(a, (high+(low+1))/2, high);
}
}
public class Main {
public static void main(String[] args) throws Exception {
double [] l = {1,2,3,4,5};
ArraySum a = new ArraySum(0, 5, l);
System.out.println("the sum is: " + a.auxSum());
}
}
你差点就拿到了!以下是几点建议:
>
high/2
并不正确。(想想如果low
=98和high
=100会发生什么。)
当您递归时,您需要记住您传递的索引是包含的,所以在第二个递归调用中,我建议您将1添加到较低的索引(这样它就不会与第一个递归调用的较高索引重叠)
我需要在一个xml文件中找到一个子节点,它位于递归父子属性中。下面是一个xml示例: //NodeB[不(nodeA)] 但是我需要选择第一个(并且只选择第一个)组,而没有子组,实际上是上面示例中的前三次出现。
问题内容: 我将以说这是家庭作业为开头。我只是在寻找一些指示。我一直在为此绞尽脑汁,对于我的一生,我只是不明白。我们被要求在列表中找到最小的元素。我知道我在这里需要一个子列表,但是在那之后我不确定。任何指针都很棒。谢谢。 问题答案: 从最一般的意义上讲,递归是一个基于分解工作的概念,然后将较小的工作分派给自己的副本。为了使递归正常工作,您需要三件事: 工作细目。您如何使每个步骤变得“简单”? 递归
我试图找到最小元素并删除它,但不幸的是我不能。我想得到一些帮助,这是我的代码。 我在Class Stack中只有这些方法:equals,is空,pop,推送,top,toString(主要方法)。 提前感谢。
问题内容: 我有一个多维数组,我想获取围绕该数组中特定元素的元素。 例如,如果我有以下内容: 如何找到以上任何一个元素中的所有8个元素?以及如何处理边缘的元素? 我发现的一种方法是为此编写9行代码,这很明显,但是有更好的解决方案吗? 问题答案: for (i = 0; i < array.length; i ) { for (j = 0; j < array[i].length; j ) { fo
我需要编写一个递归方法,它需要两个并行数组和单词来查找,查找指定的单词并在另一个数组上每次索引匹配时求和值。例如: 如果我说我需要查找单词,它应该在找到索引时对第二个数组上的值求和。在这种情况下,它应该求和,。 如何使我的递归方法使其采用适当的参数并递归地进行计算。我将使用硬编码值。 这是我目前所拥有的。我很确定我的递归方法需要更多参数,但我会看看是否有人能帮助我
查找数组是指从数组中查询指定位置的元素,或者查询某元素在指定数组中的位置。使用 Arrays 类的 binarySearch() 方法可以实现数组的查找,该方法可使用二分搜索法来搜索指定数组,以获得指定对象,该方法返回要搜索元素的索引值。 binarySearch() 方法有多种重载形式来满足不同类型数组的查找需要,常用的重载形式有两种。 (1) 第一种形式如下: 其中,a 表示要搜索的数组,ke