java - 递归地在只有一个参数数组的数组中找到平均值
问题描述
我正在学习 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;
}
解决方案
我认为这是你需要的:
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
.
同样,这在现实世界中根本没有意义,而只是作为一个学术挑战。
最后一点,“查找”通常是指在数组中查找元素。在这种情况下,您没有找到任何东西,而是计算平均值,因此函数名称对我来说似乎也不正确。
推荐阅读
- python-3.x - 如何将计数添加到直方图中?
- javascript - 如何使字符串成为类中的函数调用?
- cesium - 在创建 Cesium.viewer 后 Toogle Cesium requestRenderMode
- excel - 嵌套的 for 和 if 循环在 VBA 中不起作用
- kotlin - 将逻辑 AND 应用于布尔值列表
- python - 是否可以将值解压缩到多个函数中?
- wpf - 使用 VS 在 XAML 中无法识别控制模板
- tensorflow - 感知损失函数没有给出任何梯度张量流
- php - 通过 PHP 的 IOS 13 标头
- angular - 以角度绑定数据。声明模型,其中包含另一个模型的列表