在只有一个参数的数组中递归求平均数。

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

我正在上Java的一门课,有一个练习要求在一个int类型的数组中递归地找到平均数(double),该方法以一个数组为参数。我在这个方面做了一段时间,还没有得出答案,有人能给我指点一下吗?

我能够把所有的元素加在一起,但是当我按数组的长度潜水时,我意识到每次它在方法中得到一个较小的值时,这个值就会改变。

这里是目前的代码。

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;
}
java 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.

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

最后一点,"find "通常是指在数组中找到一个元素。在本例中,你并没有找到任何东西,而是在计算平均数,所以这个函数名在我看来也不对。

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