当前位置: 首页 > 知识库问答 >
问题:

递归查找数组元素之和

常源
2023-03-14
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());

    }
}

共有1个答案

袁开宇
2023-03-14

你差点就拿到了!以下是几点建议:

>

  • 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