在Java中只有一个参数数组的情况下递归查找数组中的平均值

问题描述 投票:0回答:1

我正在Java中学习一个类,一个练习要求递归地在int类型的数组中找到平均值(双精度),该方法将单个数组作为参数。我已经在这方面工作了一段时间,但还没有得出答案,有人可以将我引向正确的方向吗?

我能够将所有元素加在一起,但是当按数组的长度潜水时,我意识到每次以较小的值进入方法时,这种情况都会改变。

到目前为止的代码:

public static double findAverage(int[] classRoom) {

      if(classRoom.length > 0) {

          int grade = classRoom[0];

          int[] newArray = new int[classRoom.length-1]; //create newArray with array length -1

          System.arraycopy(classRoom, 1, newArray, 0, newArray.length);//copy array into array length -1 

          return  grade + findAverage(newArray);
      }
      else
         return 0;
}
arrays recursion average
1个回答
0
投票

我认为这是您需要的:

public static double findAverage(int[] classRoom) {
    if (classRoom.length == 0)
        return 0;

    int grade = classRoom[0];

    if (classRoom.length == 1)
        return grade;

    int[] newArray = new int[classRoom.length-1]; //create newArray with array length -1
    System.arraycopy(classRoom, 1, newArray, 0, newArray.length);//copy array into array length -1 
    return  (grade + findAverage(newArray) * newArray.length) / classRoom.length;
}

在最后一行中,您正在执行average * length以获取总和,因此您可以对当前值求和,然后除以总长度(当然是newArray.length + 1

© www.soinside.com 2019 - 2024. All rights reserved.