递归查找数组中只有一个参数数组的平均值

Recursively finding average in array with only one parameter array

我在 Java 中取 class,一个练习要求递归地在一个 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;
}

我想这就是你需要的:

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

同样,这在现实世界中完全没有意义,只是作为一个学术挑战。

最后一点,"find" 通常是指在数组中查找元素。在这种情况下,您没有找到任何东西,而是计算平均值,所以函数名称对我来说也不合适。